互相交流入口地址
整体目录:
【九】springboot整合redis实现启动服务时热点数据保存在全局和缓存
【十三】springboot整合WebService关于传参数
【十五】springboot整合WebSocket实现聊天室
【十六】RabbitMQ基础篇(下载安装并基础使用,内含各种坑问题)
【十九】初学Kafka并实战整合SpringCloudStream进行使用
【二十】springboot整合ElasticSearch实战(万字篇)
【二十三】springboot整合activiti7(1)实战演示篇
【二十四】springboot整合spring事务详解以及实战
【二十五】springboot使用EasyExcel和线程池实现多线程导入Excel数据
【二十六】springboot整合jedis和redisson布隆过滤器处理缓存穿透
【二十八】springboot之threadLocal参数解析器实现session一样保存当前登录功能
目录
[2、 项目引入依赖](#2、 项目引入依赖)
场景:现在有一个需求,要求某公司将人员的简历信息批量导出成excel,以压缩包形式输出,例如筛选出1000个员工,并将他们的简历1000份导出,压缩成压缩包。
本文以一个简化的操作来进行demo演示,本文就以普通的列表导出为例。
1、测试数据
2、 项目引入依赖
<!-- excel处理 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.2.1</version>
</dependency>
3、代码
此处demo我假设的是一个人会有多条集合的数据,也或与是一个对象结构的数据(比如简历填充)。根据实际情况改造一下即可。
先模拟查出假数据。
创建临时压缩文件,获取该文件的ZipOutputStream流。
再通过easyExcel的Workbook方式(可以采用多种方式),创建一个ByteArrayOutputStream,通过easyExcel将数据写入ByteArrayOutputStream,再将ByteArrayOutputStream写入ZipOutputStream。最后关闭ZipOutputStream。再将本地临时文件通过response.getOutputStream()的ServletOutputStream流输出,最后在删除本地缓存zip。
4、效果
如果有其他场景有疑问的欢迎评论区讨论。