建议先去看文档
建议描述
目前从文档看不支持图片的导入,同时导出时文档里有提到会占用很多内存,我这里想到一些迂回的解决方案。
导入
导入时,excel文件中(按照zip解压后)有两个文件涉及到了图片的描述, xl/drawings/_rels/drawing1.xml.rels
和 xl/drawings/drawing1.xml
。前者保存了图片路径和图片引用id的对应关系。后者保存了图片引用id和图片在表格中行列位置的关系。
导入数据前先根据这两个xml,将media文件下的图片存储到临时目录(文件名设置标记为图片的开始坐标点位置),然后读取数据时便可以根据期望图片存在的单元格坐标读取到图片。这种方法要求读取图片所在单元格必须不为空。
导出
导出时,easyexcel的文档里提到了图片会全部在内存中。如果想避免这个问题,我能想到的方法就是一开始先提供一个很小的占位图片(可以复用),将真正需要导出的图片先放在临时目录中。在使用easyexcel生成Excel之后,再替换掉media文件下的图片为真正需要导出的图片。
目前看media文件下的文件名都是image+数字格式的图片文件,如果能自定义导出时的文件名,替换时候可能更方便(如果不能修改,也只好按照顺序来作为替换依据)
3条答案
按热度按时间xtfmy6hx1#
图片导出使用poi5.x版本已经可以实现不全部放内存了
niknxzdl2#
目前有版本支持有流式写入图片吗,golang已经放弃了,太难了。看看java有没有办法搞
bmvo0sr53#
目前有版本支持有流式写入图片吗,golang已经放弃了,太难了。看看java有没有办法搞
使用原生poi吧