try {
String fileName = "订单";
HttpServletResponse response = ExcelUtil.getResponseForExcelExport(fileName);
// 设置每批次查询的数量
int batchSize = 1000;
int page = 1;
boolean hasMoreData = true;
do {
// 创建新的输出流和 ExcelWriter
ServletOutputStream outputStream = response.getOutputStream();
ExcelWriter excelWriter = EasyExcelFactory.write(outputStream, OmsOrderExportV2DTO.class)
.autoCloseStream(false)
.build();
List<OmsOrderExportV2DTO> list = null;
try {
// 每次查询一批数据
query.setPage(page++);
query.setSize(batchSize);
list = this.getExportList(query);
// 写入当前批次的数据
excelWriter.write(list, EasyExcel.writerSheet(fileName).build());
// 刷新并关闭 ExcelWriter 和输出流
excelWriter.finish();
outputStream.flush();
} finally {
excelWriter.finish();
outputStream.close();
}
// 检查是否还有数据
if (list == null || list.size() < batchSize) {
hasMoreData = false;
}
} while (hasMoreData);
} catch (Exception e) {
log.error(e.getMessage());
throw new BaseException("00450011015");
}
批量导出Excwl防止oom预备代码
最新推荐文章于 2024-07-22 14:15:06 发布