在這裡就上關鍵代碼了,如果有不明白的可以看我之前的文章(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();
}
}