SpringBoot:EasyExcel动态字段(不创建对象)多sheet、多文件|压缩包格式导出

本文介绍了如何在Java项目中使用EasyExcel库来处理动态字段的Excel导出,包括多sheet导出和压缩包导出两种方式。在处理大量数据时,EasyExcel相比POI提供了更好的性能。通过引入EasyExcel依赖并设置相应参数,可以实现动态生成多个sheet或多个Excel文件,并以压缩包形式下载的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:

项目中填报业务表是动态表,需求是在某个归集分析页加导出功能,导出的数据会包含多个表,所以就有了动态字段的导出功能。

处理方式:

1.多文件以压缩包格式导出
2.多sheet(工作表),一个文件导出

@@当然,这里用poi一样可以实现,相比EasyExcel不是很方便,其次,当数据量较大会有性能问题, POI方式可参考 >> SpringBoot 动态生成多个Excel文件以压缩包.zip格式下载 这里就以EasyExcel为例:

1.引入依赖

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>2.2.8</version>
        </dependency>

2. 代码实现

2.1 写入多个sheet表

官方参考文档:重复多次写入写到单个或者多个sheet

  response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; charset=UTF-8");
  response.setCharacterEncoding("utf-8");
        // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
  String fileName = URLEncoder.encode("部门归集数据", "UTF-8").replaceAll("\\+", "%20");
  response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");

  ExcelWriter writer = EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();

// 多个sheet表这个循环
for (遍历多个模板){ 
	List<List<String>> heads = new LinkedList<>(); // 表头要设置为这种格式
	// 设置表头
	WriteSheet mainSheet0 = EasyExcel.writerSheet(i, templateVo.getTemplateTitle().replace("表", "") + "_" + i).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
            mainSheet0.setHead(heads);
    // 写入数据
  	writer.write(dataList, mainSheet0);
}
// 最后 finish
if (null != writer) {
	writer.finish();
}

2.2 多个文件以压缩包导出

可参考 >> 动态生成多个Excel文件以压缩包.zip格式下载
这以下地方修改就可以 ↓
在这里插入图片描述

													END
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值