仅供参考。注意点1是多sheet导出时,sheetNo 和 sheetName 要根据页数变更。如果sheetName一样,会导出在一个sheet中,另外我是自定义head,不是用对象去定义的。这样更灵活些。 @Override public void exprot(HttpServletResponse response,List<Long> ids) { List<SupplyPlanHeadDTO> exportData = new ArrayList<>(); List<List<String>> head = new ArrayList<>(); ; List<List<String>> body = new ArrayList<>(); ; List<String> productBarCode = Lists.newArrayList(); List<String> productName = Lists.newArrayList(); List<String> regionWarehouseName = Lists.newArrayList(); productBarCode.add("xxx"); productName.add("xxx"); regionWarehouseName.add("xxx"); ExcelWriter excelWriter = null; try { response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf-8"); fileName = URLEncoder.encode("导出报表" + DateUtil.getDateTime(), "UTF-8"); response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); excelWriter = EasyExcel.write(response.getOutputStream()).build(); for (int i = 0; i < ids.size(); i++) { head.clear(); body.clear(); head.add(productBarCode); head.add(productName); head.add(regionWarehouseName); Long id = ids.get(i); SupplyPlanHeadDTO byId = getById(id); SupplyPlanDetailQuery supplyPlanDetailQuery = new SupplyPlanDetailQuery(); supplyPlanDetailQuery.setSupplyPlanHeadId(id); List<SupplyPlanDetailDTO> supplyPlanDetailDTOS = supplyPlanDetailManager.queryByHeadId(id); byId.setDetailDTOList(supplyPlanDetailDTOS); exportData.add(byId); if (EmptyUtil.isNotEmpty(exportData)) { List<SupplyPlanDetailDTO> detailDTOList = exportData.get(0).getDetailDTOList(); if (EmptyUtil.isNotEmpty(detailDTOList)) { detailDTOList.stream().forEach(x -> { String timeStr = DateUtil.format(x.getStartDate(), "yyyy.MM.dd") + "_" + DateUtil.format(x.getEndDate(), "yyyy.MM.dd"); List<String> time = Lists.newArrayList(); time.add(timeStr); head.add(time); }); } for (SupplyPlanHeadDTO x : exportData) { List<String> bodyItem = Lists.newArrayList(); bodyItem.add(x.getProductBarCode()); bodyItem.add(x.getProductName()); bodyItem.add(x.getDetailDTOList().get(0).getRegionName()); if (EmptyUtil.isNotEmpty(x.getDetailDTOList())) { for (SupplyPlanDetailDTO y : x.getDetailDTOList()) { bodyItem.add(y.getDemandNum() == null ? "0.000" : y.getDemandNum().toString()); } } body.add(bodyItem); } //获取sheet对象 WriteSheet mainSheet = EasyExcel.writerSheet(i, byId.getDemandCycle()).head(head).build(); //向sheet写入数据 excelWriter.write(body, mainSheet); } } } catch (Exception e) { log.error("SupplyPlanHeadServiceImpl.exprot error:{}",e.getMessage(),e); } finally { if (excelWriter != null) { excelWriter.finish(); } } }
easyExcel 多sheet导出
最新推荐文章于 2024-04-03 10:47:11 发布