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();
    }
经验分享 程序员 微信小程序 职场和发展