jeecgboot / JimuReport

「可视化报表、仪表盘、大屏」积木报表是一款类Excel操作风格,在线拖拽设计的报表工具。功能涵盖: 报表设计、打印设计、图形报表、仪表盘门户设计、大屏设计等,完全免费!秉承“简单、易用、专业”的产品理念,极大的降低报表开发难度、缩短开发周期、解决各类报表难题。
http://jimureport.com
GNU General Public License v3.0
6.46k stars 1.65k forks source link

如何将excel导出的POI替换为EasyExcel #2453

Closed HumorChen closed 6 months ago

HumorChen commented 8 months ago
版本号:

v1.6.6

问题描述:

POI性能低下,在导出几十万数据的时候直接会把服务的内存打爆,且响应时间太长,如何将excel导出的POI替换为EasyExcel

错误日志&截图:
重现步骤:

友情提示(为了提高issue处理效率):

zhangdaiscott commented 8 months ago

用的那个导出? 报表截图看看

HumorChen commented 8 months ago

image-20240306135957332

HumorChen commented 7 months ago

@zhangdaiscott 已截图给你为啥直接关闭issue呢?

zhangdaiscott commented 7 months ago

改不了,easypoi太简单了,我们的导出很复杂,各种合并

HumorChen commented 7 months ago

@zhangdaiscott 我们项目组使用的时候遇到了导出性能问题,由于已闭源,不好直接改造,我设计了个方案,在积木分页调数据源API地址的接口进行拦截,识别导出调用,然后返回空数据让积木返回空报表,额外配套做了个导出中心,拦截到之后创建导出任务并异步执行任务(任务所需的参数信息通过积木的自定义header接口透传到请求头里一直传递到报表配置的api那去,最后放进导出任务参数里供后续导出任务执行使用),读取积木数据库里的表设计信息,再次分页调表的数据api拉取数据,并用EasyExcel生成excel二进制流,上传OSS变文件URL,性能好很多,实测2分半钟导出了34.6万条数据(excel文件60Mb,机器2H4G),导出项目的容器实例内存和CPU拉升后等导出完成又回落到正常,稳定没有出问题了,之前会直接导出失败,或者把机器内存打爆让机器被容器服务重启掉了,导致导出失败。官方是否可以对能支持easyexcel的情况下用easyexcel,这个方案性能确实好很多,推荐支持的地方采用EasyExcel

zhangdaiscott commented 7 months ago

单纯的表数据 无计算不合并,我们有大数据导出按钮,也不慢

HumorChen commented 7 months ago

@zhangdaiscott 大数据导出按钮也性能差,只要数据量大,这个POI就拉胯,我这边试7万条数据试了几次都是崩,等了2.8分钟请求报错返回504 Gateway Time-out,一万条的时候30秒导出,一万五千条的时候直接1.5分钟后崩了

HumorChen commented 7 months ago

社区互帮互助,遇到相同问题的兄弟可以看下我这个博客分享,自己用EasyExcel实现导出excel部分来优化性能 [自定义导出](https://humorchen.blog.csdn.net/article/details/137456456)

HumorChen commented 7 months ago

@zhangdaiscott 刚看到你reopened 这个issue,是官方团队计划后续对easyexcel支持的场景使用easyexcel吗

zhangdaiscott commented 7 months ago

我们会参考,不会换成他,他的功能不够用

zhangdaiscott commented 6 months ago

我们做了一定优化,下个版本发布后,再看效果