700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 大量图片数据导出为excel导致内存溢出解决方案落地

大量图片数据导出为excel导致内存溢出解决方案落地

时间:2021-11-02 01:45:45

相关推荐

大量图片数据导出为excel导致内存溢出解决方案落地

前言

目前我们公司项目使用该方案已实现:导出含有上G图片数据的excel,内存占用在60~70mb。这也是这个博客实现的目标。

如果你现在遇到导出excel含图片有多大磁盘占用,就会有多大的内存占用问题,那你就来对地方了!

继续接着前面的问题研究 大数据量excel含图片导出解决方案

前面说使用分页导出解决,但是对于客户使用体验来说,也是很麻烦。查一条记录可能还得打开多个excel,所以能放在一个excel里对客户来说还是很舒服的。

那就还是之前的问题,使用SXSSFWorkbook窗口操作图片没缓存在磁盘上,进行大量图片导出时始终占用着内存。

excel简介

excel本质上就是一堆文件的zip压缩包,你可以手动把excel文件的后缀改成zip就知道了。

数据路径 xl\worksheets\sheet1.xml

图片路径 xl\media

图片样式和索引 xl\drawings\drawing1.xml

想法

在做图片导出时替换SXSSFWorkbook工具,自己实现一套导出操作

导出时创建这样的文件夹和文件,将数据按照excel对应的sheet.xml格式写入sheet.xml文件

关联图片时记录图片路径在内存中,图片复制到xl\media中

文件数据读取生成后,压缩该文件为zip然后改后缀xlsx就可以了

理论存在,开始实践

先找网上有没有别人做过这样的轮子Excel支持大量图片导出

在这个轮子的基础上我进行了二次开发,拓展了一些功能,修复了一些问题

使用步骤

引入maven

<dependency><groupId>top.minwk</groupId><artifactId>excel-x</artifactId><version>1.0.2</version></dependency>

demo地址

excel含图片导出demo地址

导完包可以将demo中的测试代码复制到你的项目中进行测试,如自定义标题,填入文本和图片测试代码,修改对应你的图片路径就可以了。

多图片测试方法,你可以在idea中指定该方法执行的最大最小内存

只需要将搜集来的图片放在该路径下,修改数量,就可以测试大数据量的图片导出

支持

其中有遇到任何问题都可以在下面评论联系我,我会第一时间回复。有什么修改的建议也可以提issues哦!,好的轮子都是大家一起贡献的!

源码地址

excel-batch-picture-support

参考

手写生成Excel支持大量图片导出自动合并单元格

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。