EasyExcel动态表头,复杂数据导出
最终效果图
该导出报表是使用response输出文件流,浏览器下载导出Excel文件
下图为最终导出的效果
Controller层代码
@GetMapping("/Export")
public void weekExport(HttpServletResponse response, VoucherTableHeadVO voucherTableHeadVO) {
try {
String sheetName = "化验周报表";
String fileName = sheetName.concat(String.valueOf(System.currentTimeMillis())).concat(".xlsx");
//设置单元格合并策略
//LoopMergeStrategy(行数, 列数)合并
LoopMergeStrategy loopMergeStrategy1 = new LoopMergeStrategy(4, 0);
LoopMergeStrategy loopMergeStrategy2 = new LoopMergeStrategy(4, 1);
LoopMergeStrategy loopMergeStrategy3 = new LoopMergeStrategy(4, 2);
LoopMergeStrategy loopMergeStrategy4 = new LoopMergeStrategy(4, 3);
LoopMergeStrategy loopMergeStrategy5 = new LoopMergeStrategy(4, 4);
//表头数据
List<List<String>> headList =voucherQualityService.setHeadList(voucherTableHeadVO);
//表数据
List<List<Object>> lists = voucherQualityService.setWeekList(voucherTableHeadVO);
//response输出文件流
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName, "UTF-8"));
//写入表头,模板,单元格合并策略,表数据
EasyExcel.write(response.getOutputStream()).head(headList).sheet("Sheet1"