Java ve EasyExcel ile dosya içeri ve dışa aktarma işlemlerini kolayca gerçekleştirin.
İlgili Etiketler:1. Java'da Çöp Toplama İşlemini Anlama
2. Java Map'in Akıllı Tasarımı
Java ve EasyExcel Giriş:
Proje kapsamında Excel dosyalarının içeri ve dışa aktarılması ile indirilmesi gerekmektedir. Örneğin, çalışan bilgilerinin içeri aktarılması, dışa aktarılması ve manuel giriş işlemleri zahmetlidir. Bu blog yazısı, Java'da Excel dosyalarını nasıl içeri ve dışa aktaracağınızı açıklamaktadır.
teknoloji yığını
Excel aracı: EasyExcel
Seçilen çerçeveler: Spring, Spring MVC, MyBatis (SSM)
Proje derleme yönetim aracı: Maven
gereksinimler:
1.Çalışan bilgilerinin içeri ve dışa aktarılması için Excel aracının kullanılması gerekmektedir
2.Dışa aktarma gereksinimi, belirtilen konuma çıktı almak ve indirmektir
3.İçeri aktarılan dosya veritabanında saklanır ve sayfada görüntülenir
4.Dosyayı dışa aktarmak için Dışa Aktar'a tıklayın; dosya belirtilen adrese yazılır ve indirilir
Java ve EasyExcel Görselleri
Proje yapısı
Temel kaynak kodu
Alibaba EasyExcel bağımlılıklarını içeri aktarın
< dependency >
< groupId > com.alibaba
< artifactId > easyexcel
< version > 2.1.6
Burada EasyExcel kullanılmaktadır. Neden POI değil?
EasyExcel, POI'nin yükseltilmiş bir sürümüdür. POI nispeten hantal iken EasyExcel, POI'nin bazı karmaşık bileşenlerini ortadan kaldırmıştır. Bu nedenle EasyExcel daha hafiftir ve bu makalede EasyExcel kullanılmıştır.
EasyExcel bir Alibaba ürünüdür, POI ise Apache Vakfı'nın açık kaynak bir ürünüdür. EasyExcel, POI üzerinde bir yükseltme gerçekleştirmiştir.
Temel varlık sınıfı

package com.wanshi.spring.entity ; _
import com.alibaba.excel.annotation.ExcelIgnore ; _
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Employee {
@ExcelIgnore _
private String noid ;
@ColumnWidth ( 20 ) _
@ExcelProperty ( " Employee Name" )
private String emp_name ;
@ColumnWidth ( 20 ) _
@ExcelProperty ( " Employee Age" )
private Integer emp_age ;
@ExcelIgnore _
private Integer emp_sex ;
// gereksiz alanlar
@ColumnWidth ( 20 ) _
@ExcelProperty ( " employee gender" )
private String str_emp_sex ;
@ColumnWidth ( 20 ) _
@ExcelProperty ( "Employee Salary " )
private Double emp_salary ;
@ColumnWidth ( 20 ) _
@ExcelProperty ( " Employee Address" )
private String emp_address ;
@ColumnWidth ( 20 ) _
@ExcelProperty ( "EmployeePosition " )
private String emp_position ;
/ / Sayfalama ile ilgili, geçerli sayfa ve sayfa başına veri sayısı
@ExcelIgnore _
private Integer pageNum ;
@ExcelIgnore _
private Integer pageSize ;
}
Temel dinleyici sınıfı
EmployeeListener sınıfı:
package com.wanshi.spring.listener;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.wanshi.spring.entity.Employee;
import java.util.ArrayList;
import java.util.List;
public class EmployeeReadListener extends AnalysisEventListener < Employee > {
// çalışan koleksiyonu
private static List employeeList = new ArrayList < >( );
// Her okuma aynı olduğunda, invoke yöntemi bir kez çağrılacaktır
@Override
public void invoke ( Employee data, AnalysisContext context) {
employeeList.add (data);
System.out.println ( "Parse to a piece of data: " + data);
}
// Tüm okuma tamamlandıktan sonra bu yöntem çağrılacaktır
@Override
public void doAfterAllAnalysed ( AnalysisContext context) {
System.out.println ( "All parsing completed" );
}
/**
* Okunan çalışan koleksiyonunu döndür
* @return
*/
public static List getStudentList ( ) {
return employeeList ;
}
}
2. Java Map'in Akıllı Tasarımı
Java ve EasyExcel Giriş:
Proje kapsamında Excel dosyalarının içeri ve dışa aktarılması ile indirilmesi gerekmektedir. Örneğin, çalışan bilgilerinin içeri aktarılması, dışa aktarılması ve manuel giriş işlemleri zahmetlidir. Bu blog yazısı, Java'da Excel dosyalarını nasıl içeri ve dışa aktaracağınızı açıklamaktadır.
teknoloji yığını
Excel aracı: EasyExcel
Seçilen çerçeveler: Spring, Spring MVC, MyBatis (SSM)
Proje derleme yönetim aracı: Maven
gereksinimler:
1.Çalışan bilgilerinin içeri ve dışa aktarılması için Excel aracının kullanılması gerekmektedir
2.Dışa aktarma gereksinimi, belirtilen konuma çıktı almak ve indirmektir
3.İçeri aktarılan dosya veritabanında saklanır ve sayfada görüntülenir
4.Dosyayı dışa aktarmak için Dışa Aktar'a tıklayın; dosya belirtilen adrese yazılır ve indirilir
Java ve EasyExcel Görselleri
Proje yapısı
Temel kaynak kodu
Alibaba EasyExcel bağımlılıklarını içeri aktarın
< dependency >
< groupId > com.alibaba
< artifactId > easyexcel
< version > 2.1.6
Burada EasyExcel kullanılmaktadır. Neden POI değil?
EasyExcel, POI'nin yükseltilmiş bir sürümüdür. POI nispeten hantal iken EasyExcel, POI'nin bazı karmaşık bileşenlerini ortadan kaldırmıştır. Bu nedenle EasyExcel daha hafiftir ve bu makalede EasyExcel kullanılmıştır.
EasyExcel bir Alibaba ürünüdür, POI ise Apache Vakfı'nın açık kaynak bir ürünüdür. EasyExcel, POI üzerinde bir yükseltme gerçekleştirmiştir.
Temel varlık sınıfı

package com.wanshi.spring.entity ; _
import com.alibaba.excel.annotation.ExcelIgnore ; _
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Employee {
@ExcelIgnore _
private String noid ;
@ColumnWidth ( 20 ) _
@ExcelProperty ( " Employee Name" )
private String emp_name ;
@ColumnWidth ( 20 ) _
@ExcelProperty ( " Employee Age" )
private Integer emp_age ;
@ExcelIgnore _
private Integer emp_sex ;
// gereksiz alanlar
@ColumnWidth ( 20 ) _
@ExcelProperty ( " employee gender" )
private String str_emp_sex ;
@ColumnWidth ( 20 ) _
@ExcelProperty ( "Employee Salary " )
private Double emp_salary ;
@ColumnWidth ( 20 ) _
@ExcelProperty ( " Employee Address" )
private String emp_address ;
@ColumnWidth ( 20 ) _
@ExcelProperty ( "EmployeePosition " )
private String emp_position ;
/ / Sayfalama ile ilgili, geçerli sayfa ve sayfa başına veri sayısı
@ExcelIgnore _
private Integer pageNum ;
@ExcelIgnore _
private Integer pageSize ;
}
Temel dinleyici sınıfı
EmployeeListener sınıfı:
package com.wanshi.spring.listener;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.wanshi.spring.entity.Employee;
import java.util.ArrayList;
import java.util.List;
public class EmployeeReadListener extends AnalysisEventListener < Employee > {
// çalışan koleksiyonu
private static List
// Her okuma aynı olduğunda, invoke yöntemi bir kez çağrılacaktır
@Override
public void invoke ( Employee data, AnalysisContext context) {
employeeList.add (data);
System.out.println ( "Parse to a piece of data: " + data);
}
// Tüm okuma tamamlandıktan sonra bu yöntem çağrılacaktır
@Override
public void doAfterAllAnalysed ( AnalysisContext context) {
System.out.println ( "All parsing completed" );
}
/**
* Okunan çalışan koleksiyonunu döndür
* @return
*/
public static List
return employeeList ;
}
}
Java+EasyExcel EasyExcel dosya içeri aktarma
Java+EasyExcel, Test test sınıfı ile dosyanın içeri aktarılması ve veritabanında saklanması
@Test
public void test1 () {
ExcelReaderBuilder workBook = EasyExcel.read
( "C:\Users\wanghuicall\Desktop\employee.xlsx" , Employee . class , new EmployeeReadListener ()) ;
// çalışma sayfasını sarmalama
ExcelReaderSheetBuilder sheet1 = workBook.sheet ();
// okuma
sheet1.doRead();
//veritabanına yazma
List
for (Employee employee : studentList ) {
employee.setNoid ( PbSecretUtils.uuid ());
employeeMapper.insert (employee);
}
}
Sayfada dosyayı içeri aktarmak için tıklayın ve veritabanına kaydedin
EmployeeController sınıfı:
@PostMapping ( " / import_employee_excel " )
public String importEmployeeExcel ( MultipartFile emp_excel ) {
employeeService.importExcel ( emp_excel );
return "redirect:/employee/list" ;
}
EmployeeService sınıfı:
/**
* Kullanıcı tarafından seçilen dosyayı alın, dosyayı belirtilen konuma kaydedin ve ardından verileri veritabanına kaydedin
* @param emp_excel
* @return
*/
public Integer importExcel(MultipartFile emp_excel) {
try {
String fileName = FileUploadUtil.upload(emp_excel, "");
ExcelReaderBuilder workBook = EasyExcel.read
(GlobalSet.upload_url+fileName, Employee.class, new EmployeeReadListener());
// çalışma sayfasını sarmalama
ExcelReaderSheetBuilder sheet1 = workBook.sheet();
// okuma
sheet1.doRead();
List
for (Employee employee : studentList) {
employee.setNoid(PbSecretUtils.uuid());
if ("男".equals(employee.getStr_emp_sex())) {
employee.setEmp_sex(1);
} else {
employee.setEmp_sex(2);
}
employeeMapper.insert (employee);
}
} catch ( IOException e) {
e.printStackTrace ();
}
return 0 ;
}
Java+EasyExcel EasyExcel dosya dışa aktarma
Test test sınıfı ile dosyayı belirtilen konuma dışa aktarma
@Test
public void test2 () throws FileNotFoundException {
List
ExcelWriterBuilder workBook = EasyExcel.write ( GlobalSet.download_url , Employee . class ) ;
// sheet yöntemi parametreleri: çalışma sayfasının sıra numarası (0'dan başlar) veya çalışma sayfasının adı
workBook.sheet ( "Test Data Sheet" ). doWrite ( employeeList );
System.out.println ( "Write complete!" );
}
/**
* Test verisi oluşturma
* @return
*/
public List
List
for (int i = 1; i < 100; i++) {
Employee employee = new Employee();
employee.setEmp_name("小王说:"+i);
employee.setEmp_age(19);
if (i % 10 == 0) {
employee.setEmp_sex(1);
} else {
employee.setEmp_sex(2);
}
employee.setEmp_salary(19999.00+i);
employee.setEmp_address ( "Beijing Chaoyang District" + i );
employee.setEmp_position ( "Java Senior Engineer" );
employeeList.add (employee);
}
return employeeList ;
}
Sayfa üzerinden belirtilen dosyaya dışa aktarma ve dosyayı indirme işlemi tamamlandıktan sonra
EmployeeController sınıfı
@GetMapping ( " / export_employee_excel " )
public void exportEmployeeExcel(HttpServletResponse response) {
try {
employeeService.exportEmployeeExcel(response);
} catch (IOException e) {
e.printStackTrace();
}
}
EmployeeService sınıfı:
public void exportEmployeeExcel(HttpServletResponse response) throws IOException {
List
try {
ExcelWriterBuilder workBook = EasyExcel.write(GlobalSet.download_url, Employee.class);
// sheet yöntemi parametreleri: çalışma sayfasının sıra numarası (0'dan başlar) veya çalışma sayfasının adı
workBook.sheet ( "Employee Information" ). doWrite ( kspwStudentSeatList );
downloadTempalate (response);
System.out.println ( "Write complete!" );
} catch (Exception e) {
e.printStackTrace ();
}
}
/**
* dosya indirme
* @param response
* @throws IOException
*/
public static void downloadTempalate ( HttpServletResponse response) throws IOException {
// Tarayıcıya bu dosyayı açmak için hangi yazılımı kullanacağını bildirin
response.setHeader ( "content-Type" , "application/vnd.ms-excel" );
// indirilen dosyanın varsayılan adı
response.setHeader ( "Content-Disposition" , " attachment;filename =" + URLEncoder.encode ( "Employee Information.xlsx" , "utf-8" ));
//4. Giriş ve çıkış akışları oluşturun
FileInputStream input = new FileInputStream ( GlobalSet.download_url );
ServletOutputStream sos = response.getOutputStream ();
//IO akışı dosyanın bayt akışını alır ve ardından tarayıcıya yanıt verir
byte [ ] arr = new byte [ 1024 ];
int res = 0 ;
while ( (res = input.read ( arr )) > 0 ){
// okunan içeriği çıkış akışına yazdır
sos.write ( arr , 0 , res);
}
input.close ();
sos.close ();
}
İlgili Makaleler
-
Veri Depolama İçin 6 İsteğe Bağlı Teknoloji
Bilgi Bankası Ekibi
Daha Fazla Özel Teklifi Keşfedin
-
Kısa Mesaj Servisi (SMS) & E-posta Hizmeti
50.000 e-posta paketi 1,99 USD'den başlayan fiyatlarla, 120 kısa mesaj ise yalnızca 1,00 USD'den başlayan fiyatlarla sunulmaktadır.
