Browse Source

导出超过100,000 条记录,分成两个sheet

lvxianyun 3 years ago
parent
commit
e637655fe0

+ 14 - 2
src/main/java/com/persagy/proxy/object/controller/AdmEquipmentController.java

@@ -15,6 +15,8 @@ import cn.hutool.poi.excel.WorkbookUtil;
 import cn.hutool.poi.excel.cell.CellUtil;
 import cn.hutool.poi.excel.editors.TrimEditor;
 import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
+import com.alibaba.excel.write.metadata.WriteSheet;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.dmp.basic.dto.RequestData;
 import com.persagy.dmp.basic.model.QueryCriteria;
@@ -270,8 +272,18 @@ public class AdmEquipmentController {
 				List<EquipmentPointExcel> equipmentPointExcels = dealEquipmentPoint(admProject.getGroupCode(),admProject.getId(),type, false, null);
 				int count = equipmentPointExcels.size();
 				if(count > 100000){
-					EasyExcel.write(response.getOutputStream(), EquipmentPointExcel.class).sheet("sheet1").doWrite(equipmentPointExcels.subList(0,100000));
-					EasyExcel.write(response.getOutputStream(), EquipmentPointExcel.class).sheet("sheet2").doWrite(equipmentPointExcels.subList(100000,count+1));
+					ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream(), EquipmentPointExcel.class).build();
+					try {
+						WriteSheet writeSheet = EasyExcel.writerSheet(0, "sheet1").build();
+						excelWriter.write(equipmentPointExcels.subList(0,100000), writeSheet);
+
+						WriteSheet writeSheet2 = EasyExcel.writerSheet(1, "sheet2").build();
+						excelWriter.write(equipmentPointExcels.subList(100000,count), writeSheet2);
+					} finally {
+						if (excelWriter != null) {
+							excelWriter.finish();
+						}
+					}
 				}else{
 					EasyExcel.write(response.getOutputStream(), EquipmentPointExcel.class).sheet("sheet1").doWrite(equipmentPointExcels);
 				}