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();
}
