在这里就上关键代码了,如果有不明白的可以看我之前的文章(https://mp.csdn.net/console/editor/html/107430199)
/** * 多sheet导出 * @param response 流 * @param list 导出的数据 * @param fileName 表头标题名称 */ public static void exportMoreSheet(HttpServletResponse response,List<Map<String, Object>> list, String fileName) throws IOException { Workbook workbook = null; workbook = ExcelExportUtil.exportExcel(list, ExcelType.HSSF); if (workbook != null) { downLoadExcel(fileName, response, workbook); } }
业务层
@PostMapping("/export") @ApiOperation(value = "导出物流信息") public void export(@RequestBody SelectDeliveryLogisticsListParamVo param, HttpServletResponse response) { try{ List<Map<String, Object>> sheetsList = new ArrayList<>(); // 获取物流单 List<LogisticsExport> logisList = service.selectExportData(param); // 第一个sheet页 //置sheet得名称 ExportParams logisParams = new ExportParams(); logisParams.setSheetName("物流信息"); // 创建sheet1使用得map Map<String, Object> logisExportMap = new HashMap<>(); // title的参数为ExportParams类型,目前仅仅在ExportParams中设置了sheetName logisExportMap.put("title", logisParams); // 模版导出对应得实体类型 logisExportMap.put("entity", LogisticsExport.class); // sheet中要填充得数据 logisExportMap.put("data", logisList); sheetsList.add(logisExportMap); // 获取物流单下面的所有的包裹信息 logisList.forEach(item -> { if (StringUtils.isNotBlank(item.getId())) { List<LogisticsPackInfoExport> packList = service.selectExportVehiclePackList(UserHelper.getTenantId(), item.getId()); // 第二个sheet页 + //置sheet得名称 ExportParams packParams = new ExportParams(); packParams.setSheetName(item.getCode() + "-包裹信息"); // 创建sheet1使用得map Map<String, Object> packExportMap = new HashMap<>(); // title的参数为ExportParams类型,目前仅仅在ExportParams中设置了sheetName packExportMap.put("title", packParams); // 模版导出对应得实体类型 packExportMap.put("entity", LogisticsPackInfoExport.class); // sheet中要填充得数据 packExportMap.put("data", packList); sheetsList.add(packExportMap); } }); CommonExport.exportMoreSheet(response, sheetsList, "物流单"); }catch (IOException e) { e.printStackTrace(); } }