一.pom.xml
<dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.2.6</version> </dependency>
二.必須要finish才會寫入,不finish只會創建empty的文件。
WriteSheet writeSheet = EasyExcel.writerSheet("測試1").head(list).build();
excelWriter.write(data, writeSheet);
//必須要finish才會寫入,不finish只會創建一個empty的文件。
excelWriter.finish();
三.template和file不能是通一個,file會將template文件清掉。
//以下寫法是錯誤的 ExcelWriter excelWriter2 = EasyExcel.write().withTemplate(filePath1st).file(filePath1st).autoCloseStream(true).build();
四.一個ExcelWriter能夠寫多個Sheet。
//第一次寫入 ExcelWriter excelWriter = EasyExcel.write().file(filePath1st).autoCloseStream(true).build(); WriteSheet writeSheet = EasyExcel.writerSheet("測試1").head(list).build(); excelWriter.write(data, writeSheet); //第二次寫入 WriteSheet writeSheet2 = EasyExcel.writerSheet("測試2").head(list).build(); excelWriter.write(data, writeSheet2); //必須要finish才會寫入,不finish只會創建一個empty的文件。 excelWriter.finish();
五.不支持多線程寫
//初始化 ExcelWriter ExcelWriter excelWriter = EasyExcel.write().file(filePath1st).build(); for(int j=0;j<=9;j++) { WriteSheet writeSheet = EasyExcel.writerSheet(j,"測試"+j).head(list).build(); new Thread(new WriteSheetThread(excelWriter,writeSheet,data)).start(); } excelWriter.finish();
如上寫法是錯誤的,無法正確運行。
線程類代碼如下
static class WriteSheetThread implements Runnable{ private ExcelWriter excelWriter; private WriteSheet writeSheet; private List<List<Object>> data; public WriteSheetThread(ExcelWriter excelWriter, WriteSheet writeSheet, List<List<Object>> data) { this.excelWriter = excelWriter; this.writeSheet = writeSheet; this.data = data; } @Override public void run() { writeExcel(); } private void writeExcel(){ System.out.println(writeSheet); excelWriter.write(data, writeSheet); } }
六.正確寫多個sheet的方式
//初始化 ExcelWriter ExcelWriter excelWriter = EasyExcel.write().file(filePath1st).build(); //正確流程,在單線程中依次寫多個文件。 for(int j=0;j<=9;j++) { WriteSheet writeSheet = EasyExcel.writerSheet(j,"測試"+j).head(list).build(); excelWriter.write(data, writeSheet); } excelWriter.finish();
