普通导出
普通导出,大数据下会内存溢出
@ApiOperation(value = "导出订单")
@RequestMapping(value = "/export_order", method = RequestMethod.GET)
public void exportOrderList(SearchOrder searchParam,ModelMap map, HttpServletRequest request, HttpServletResponse response) {
var result = orderService.searchOrderList(searchParam);
ExportParams params = new ExportParams(null, "Sheet1", ExcelType.XSSF);
params.setStyle(EasyPoiStyleUtil.class);
map.put(NormalExcelConstants.DATA_LIST, result);
map.put(NormalExcelConstants.CLASS, ExportOrderInfoDto.class);
map.put(NormalExcelConstants.PARAMS, params);
map.put(NormalExcelConstants.FILE_NAME, "订单列表");
PoiBaseView.render(map, request, response, NormalExcelConstants.EASYPOI_EXCEL_VIEW);
}
大数据导出
@ApiOperation(value = "导出订单")
@RequestMapping(value = "/export_order", method = RequestMethod.GET)
public void exportOrderList(SearchOrder searchParam,HttpServletResponse response) {
var result = orderService.searchOrderList(searchParam);
//分别是totalPage是总页数,pageSize 页码长度
int totalPage = (result.size() / 10000) + 1;
int pageSize = 10000;
String fileName="订单列表";
ExportParams exportParams = new ExportParams();
Workbook workbook = null;
workbook = ExcelExportUtil.exportBigExcel(exportParams, ExportOrderInfoDto.class, new IExcelExportServer() {
@Override
public List<Object> selectListForExcelExport(Object obj, int page) {
//将所有的数据List分批返回处理,最大每批10000
if (page > totalPage) {
return null;
}
//fromIndex开始索引,toIndex结束索引
int fromIndex = (page - 1) * pageSize;
int toIndex = page != totalPage ? fromIndex + pageSize :result.size();
List<Object> list = new ArrayList<>();
list.addAll(result.subList(fromIndex, toIndex));
return list;
}
}, totalPage);
try {
EasyPoiUtil.downLoadExcel(fileName,response, workbook);
} catch (IOException e) {
e.printStackTrace();
}
}