首页
首页 教程 派聪明
  • 首页
  • 教程
  • 派聪明
  • 登录
登录技术派畅享更多权益

用户名密码登录

其他登录:
icon_GitHubCreated with sketchtool.
绑定星球,畅享VIP服务

微信扫码/长按识别登录

输入验证码
有效期五分钟 👉 手动刷新

登录即同意 用户协议 和 隐私政策

绑定二哥编程星球,畅享 VIP 尊享服务!

戳我了解如何获取星球编号,新窗口打开

添加二哥微信 itwanger 审核更快

记得备注 星球编号
我会根据星球编号进行审核
1
如何学习技术派?
更新时间: 2023年11月28日
星球
2
技术派的架构设计是什么样的?
更新时间: 2023年03月22日
星球
3
如何整合本地缓存 Caffeine?
更新时间: 2023年03月15日
星球
4
整合 RabbitMQ
更新时间: 2023年05月15日
星球
5
给 RabbitMQ 添加连接池
更新时间: 2023年05月23日
星球
6
如何保证缓存一致性?
更新时间: 2023年05月15日
星球
7
如何实现在线人数统计?
更新时间: 2023年03月25日
星球
8
MySQL同步ES
更新时间: 2023年06月09日
星球
9
redis实现活跃排行榜
更新时间: 2023年08月21日
星球
10
实例演示如何实现性能优化
更新时间: 2023年08月30日
星球
11
十二种性能优化方案实战
更新时间: 2023年11月21日
星球
12
配置 SSL 证书
更新时间: 2023年11月21日
星球
13
ngrok内网穿透访问本地服务
更新时间: 2023年12月01日
星球
14
上传图片至 OSS
更新时间: 2023年12月04日
星球
15
如何渲染 markdown
更新时间: 2023年12月20日
星球
16
如何将技术派写到简历上?
更新时间: 2023年11月10日
星球
17
技术派的 Redis 分布式锁
更新时间: 2024年10月22日
星球
18
Linux 一键源码部署技术派
更新时间: 2024年11月12日
星球
19
如何接入微信支付?
更新时间: 2024年12月11日
星球
20
整合FastExcel导出500万条数据
更新时间: 2024年12月19日
星球
21
接入 deepseek API
更新时间: 2025年02月07日
星球
22
ACM 自动续签 SSL 证书
更新时间: 2025年06月14日
星球
关注公众号
原创
技术派整合 FastExcel 实现 500 万条数据 1 秒导出,Spring Boot+React 前后端分离

球友好,我是二哥呀,EasyExcel-Plus 正式更名为 FastExcel,并且作者正在发力推广。那作为一名同样喜欢开源的爱好者,我必须得为他们的开源精神做一点点微薄的贡献,那就是通知一声你(😄。

https://github.com/CodePhiliaX/fastexcel

要知道,FastExcel 的前身 EasyExcel 在 GitHub 上有多达 32.9k star,深受开发者的喜爱。

只不过在今年早些时候,作者从阿里离职了,阿里也因此官宣 EasyExcel 走到了生命的尽头,毕竟维护开源项目需要付出巨大的精力和时间。

看了一眼 EasyExcel 的提交记录,多达 1196 次,不容易啊。

刚好技术派中缺少导出 Excel 这一趴,于是我就索性亲自上阵把它实现了。

代码我已经提交到了 GitHub,Spring Boot 后端和 React 都有。你可以拉取最新的 main 分支查看,网上也有很多类似的例子,但要不只有前端,要不只有后端,没有完整的 web 示例。对于新手或者小白来说,还是不知道该怎么使用。

入口放在了技术派 admin 端的首页, PVPU 这块刚好有一个 echarts,可以下载近 7 天、30 天、90 天、180 天的历史数据。

完成这个小功能,简历上就可以写上这么一条:

使用 FastExcel 实现 PUPV 数据的批量导出功能,500 万条数据导出仅需 1 秒,并结合自定义线程池+ CountDownLatch 进行并发处理,导出性能提升近 60 倍。

你看,简历含金量是不是瞬间就提起来了。

实现起来也非常简单。

01、后端代码实现

第一步,在需要 FastExcel 的 module 中引入依赖。

<dependency>
    <groupId>cn.idev.excel</groupId>
    <artifactId>fastexcel</artifactId>
    <version>${fastexcel.version}</version>
</dependency>

按照关键字在技术派的源码中搜就可以找得到了。

第二步,在处理下载请求的 controller 中添加接口,注意看 HttpServletResponse 返回对象都设置了哪些属性。

@GetMapping("pvUvDayDownload2Excel")
public void pvUvDayDownload2Excel(@RequestParam(name = "day", required = false) Integer day,
                                  HttpServletResponse response) throws IOException {
    response.reset();
    response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
    response.setCharacterEncoding("utf-8");
    String fileName = URLEncoder.encode("技术派", "UTF-8").replaceAll("\\+", "%20");
    response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");

    // 获取数据
    day = (day == null || day == 0) ? DEFAULT_DAY : day;
    statisticsSettingService.download2Excel(day, response);
}

①、response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"):设置响应的内容类型为 Excel 文件的 MIME 类型。

②、response.setCharacterEncoding("utf-8");: 设置响应的字符编码为 UTF-8。

③、String fileName = URLEncoder.encode("技术派", "UTF-8").replaceAll("\\+", "%20");: 对文件名进行 URL 编码,并将加号替换为 %20,以确保文件名在 URL 中正确显示。

④、response.setHeader(&

已加入二哥编程星球,即刻绑定星球编号解锁🔐

该文档仅「二哥编程星球」的VIP用户可见

二哥的编程星球内容包括:

1. 付费文档: 技术派、MYDB 等项目配套的 120+篇教程查看权限

2. 面试指南: 校招、社招的 40 万+字面试求职攻略

3. 智能助手: 无限期使用派聪明 AI 助手,已对接讯飞星火和 ChatGPT双通道,不用花 1 分钱

4. 专属问答: 向二哥 1v1 发起提问,内容不限于 offer 选择、学习路线、职业规划等

5. 简历修改: 提供简历修改服务,附赠星球 100+优质简历模板可供参考

6. 学习环境: 打造一个沉浸式的学习环境,有一种高考冲刺、大学考研的氛围


二哥的星球

》步骤①:微信扫描上方二维码,点击「加入知识星球」按钮

》步骤②:访问星球置顶帖球友必看: https://t.zsxq.com/11rEo9Pdu,获取项目配套文档的语雀访问地址和密码

已加入星球,绑定星球编号
删除提醒

确定删除《技术派整合 FastExcel 实现 500 万条数据 1 秒导出,Spring Boot+React 前后端分离》吗

4人已点赞

回复