easyexcel实现多sheet导出(全网最简单)
导出多个sheet
controller层
try { String fileName = "信息.xlsx"; response.setContentType("application/vnd.ms-excel"); String encodeFileName; try { encodeFileName = URLEncoder.encode(fileName, "utf-8"); } catch (Exception e) { throw new WarnMessageException("文件名编码失败,失败原因:" + e.getMessage()); } response.setHeader("Content-Disposition", "attachment;filename=" + encodeFileName); trackPointRestService.exportTrackInfo(request, response, fileName); } catch (Exception e) { log.error("导出列表出现问题,入参:{}", JsonHelper.toJson(request), e); return ResponseUtil.getFailBaseDataResponse("系统错误"); }
service层
public BaseDataResponse<Boolean> exportTrackInfo(ExportTrackInfoRequest request, HttpServletResponse response, String fileName) { // 2、 查询埋点表 查询数据库的信息 // 4. 导出条件下供应商线索表 try { //把数据转换成easy Excel支持的格式 TrackPointInfoExcelDTO trackPointInfoExcelDTO = convert2TrackPointInfoExcelDTO(trackPointInfoDTO); List<TrackDataTransInfoExcelDTO> transInfoExcelDTOList = convert2TrackDataTransInfoExcelDTO(trackDataTransInfoDTOList); List<TrackTriggerRuleExcelDTO> triggerRuleExcelDTOList = convert2TrackTriggerRuleDTO(trackTriggerRuleDTOList); ExcelExportAction.doActionTrackInfoExport(trackPointInfoExcelDTO, transInfoExcelDTOList, triggerRuleExcelDTOList, response.getOutputStream()); } catch (Exception e) { throw new WarnMessageException("导出表格失败,错误信息:" + e.getMessage()); } return ResponseUtil.getSuccessBaseDataResponse(Boolean.TRUE); }
具体的每一个excelDTO
public class TrackPointInfoExcelDTO implements Serializable { /** * 备注 */ @ExcelProperty("备注") //excel上显示的表头 @ColumnWidth(15) private String remark; }
Excel的操作类里面的方法
public static void doActionTrackInfoExport(TrackPointInfoExcelDTO trackPointInfoExcelDTO, List<TrackDataTransInfoExcelDTO> transInfoExcelDTOList, List<TrackTriggerRuleExcelDTO> triggerRuleExcelDTOList, OutputStream outputStream) { ExcelWriter excelWriter = EasyExcel.write(outputStream).build(); //埋点基础信息 sheet WriteSheet writeSheet = EasyExcel.writerSheet(0, "sheet1名称") .head(TrackPointInfoExcelDTO.class).build(); excelWriter.write(Collections.singletonList(trackPointInfoExcelDTO), writeSheet); //埋点数据转换信息 sheet writeSheet = EasyExcel.writerSheet(1, "sheet2名称") .head(TrackDataTransInfoExcelDTO.class).build(); excelWriter.write(transInfoExcelDTOList, writeSheet); //埋点触发规则信息 sheet writeSheet = EasyExcel.writerSheet(2, "sheet3名称") .head(TrackTriggerRuleExcelDTO.class).build(); excelWriter.write(triggerRuleExcelDTOList, writeSheet); excelWriter.finish(); }