導出多個文件到一個Excel中的不同sheets
@ApiOperation(value = "導出多個文件到一個Excel中的不同sheets", produces = "application/octet-stream")
@PostMapping("/exportMultipleExcel")
public void exportMultipleExcel(@RequestBody DataCountVO dataCountVO, HttpServletResponse response) throws Exception {
// 設置響應的ContentType和Header,告訴瀏覽器下載文件
response.setContentType("application/vnd.ms-excel");
response.setHeader("Access-Control-Expose-Headers","Content-Disposition");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("數據統計表.xls", "UTF-8"));
// 創建Excel工作簿
Workbook workbook = new HSSFWorkbook();
// 獲取各個數據集
List<goodsStatusVO> goodsStatusList = snShipmentManageService.goodsStatus(dataCountVO);
List<goodsPartVO> goodsPartList = snShipmentManageService.goodsPart(dataCountVO);
List<shipCountVO> shipCountList = snShipmentManageService.shipCount(dataCountVO);
List<loadingStatusVO> loadingStatusList = snShipmentManageService.loadingStatus(dataCountVO);
// 創建參數對象(用來設定excel得sheet得內容等信息)
ExportParams goodsExport = new ExportParams();
// 設置sheet得名稱
goodsExport.setSheetName("品種銷售情況");
// 創建sheet1使用得map
Map<String, Object> goodsExportMap = new HashMap<>();
// title的參數為ExportParams類型,目前僅僅在ExportParams中設置了sheetName
goodsExportMap.put("title", goodsExport);
// 模版導出對應得實體類型
goodsExportMap.put("entity", goodsStatusVO.class);
// sheet中要填充得數據
goodsExportMap.put("data", goodsStatusList);
ExportParams partExport = new ExportParams();
partExport.setSheetName("品種銷量占比");
// 創建sheet2使用得map
Map<String, Object> partExportMap = new HashMap<>();
partExportMap.put("title", partExport);
partExportMap.put("entity", goodsPartVO.class);
partExportMap.put("data", goodsPartList);
ExportParams shipExport = new ExportParams();
shipExport.setSheetName("客戶發運量統計");
// 創建sheet3使用得map
Map<String, Object> shipExportMap = new HashMap<>();
shipExportMap.put("title", shipExport);
shipExportMap.put("entity", shipCountVO.class);
shipExportMap.put("data", shipCountList);
ExportParams loadingExport = new ExportParams();
loadingExport.setSheetName("當日裝車情況");
// 創建sheet4使用得map
Map<String, Object> loadingExportMap = new HashMap<>();
loadingExportMap.put("title", loadingExport);
loadingExportMap.put("entity", loadingStatusVO.class);
loadingExportMap.put("data", loadingStatusList);
// 將sheet1、sheet2、sheet3、sheet4使用得map進行包裝
List<Map<String, Object>> sheetsList = new ArrayList<>();
sheetsList.add(goodsExportMap);
sheetsList.add(partExportMap);
sheetsList.add(shipExportMap);
sheetsList.add(loadingExportMap);
workbook = ExcelExportUtil.exportExcel(sheetsList, ExcelType.HSSF);
// 將工作簿寫入到響應輸出流中
try (ServletOutputStream out = response.getOutputStream()) {
workbook.write(out);
}
// 關閉工作簿
workbook.close();
}
還有就是實體類:::::::VO

序號是一個虛擬展示序號 導出文件的時候有幾個數據就有幾個序號 在查詢的時候可以進行設置

記得加判空哦?。。。。。。?!

浙公網安備 33010602011771號