1.ExcelExportUtil
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package com.etl.commons.utils;
import com.etl.commons.excel.ExcelExport;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.OutputStream;
import java.util.List;
import org.springframework.stereotype.Component;
@Component
public class ExcelExportUtil {
public ExcelExportUtil() {
}
public ExcelExport createExcelExport(File file, Class<?> dataClass) {
try {
return ExcelExport.builder().file(file).writeClass(dataClass).build();
} catch (Exception var4) {
return null;
}
}
public void excelExportWrite(ExcelExport excelExport, List<?> data, String sheetName) {
excelExport.write(data, sheetName);
}
public void excelExportWriterFinish(ExcelExport excelExport) {
excelExport.writerFinish();
}
public ExcelExport createExcelExport(OutputStream outputStream, Class<?> dataClass) throws Exception {
return ExcelExport.builder().outStream(new BufferedOutputStream(outputStream)).writeClass(dataClass).buildNoFile();
}
}
2.分片逻辑
@Override
public void exportAppealPmSalesList(HttpServletResponse response, List<String> dmPositionCode) throws Exception {
String userName = headerHandler.getUserName();
ExcelExport excelExport;
String tableName = "SalesList_"+userName+"_"+DateUtil.getDays()+".xlsx";
long indexStart = 0;
long indexSize = 50000;
try {
//OutputStream outputStream = new FileOutputStream("C://Workspace//" + tableName);
OutputStream outputStream = response.getOutputStream();
response.setContentType("APPLICATION/OCTET-STREAM");
response.setHeader("Content-Disposition", "attachment;filename=" + UriUtils.encode(tableName, "utf-8"));
excelExport = excelExportUtil.createExcelExport(outputStream, AppealPmSalesList.class);
Integer totalCount = appealPmSalesListRepository.countPmSalesList(dmPositionCode);
//计算总分页页数,写的次数
long pageCount = totalCount % indexSize == 0 ? totalCount / indexSize : totalCount / indexSize + 1;
//分页查询
for (int i = 0; i < pageCount; i++) {
//清除data数据集合 用于释放内存
List<AppealPmSalesList> rowList =appealPmSalesListMapper.selectPmSalesList(indexStart, indexSize,dmPositionCode);
excelExportUtil.excelExportWrite(excelExport, rowList, "sheet");
indexStart = indexStart + indexSize;
rowList.clear();
}
excelExportUtil.excelExportWriterFinish(excelExport);
} catch (Exception e) {
e.printStackTrace();
throw new BusinessException(tableName + "生成计算报告文件异常");
}
}