java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > 使用easyexcel导出的excel文件,使用poi读取时异常

使用easyexcel导出的excel文件,使用poi读取时异常处理方案

作者:橙巴布

这篇文章主要介绍了使用easyexcel导出的excel文件,使用poi读取时异常处理方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

场景

一个导出服务,传入json数据,根据数据生成excel文件返回。

别的项目有一个需求,导出文件给用户修改,修改后再次导入。

之前一直没有问题,这一天,突然报了个 【文件读取失败】异常!!!(这里为后台的自定义异常信息,其原因是POI读取文件时抛出了异常)

经过研究发现,使用服务导出的excel文件大小是6kb,但是只要打开文件,再保存,哪怕什么都不修改,文件大小会变为11kb。然后再次导入时,就能正常导入。(问我之前为什么没问题?正经人导出来肯定是修改了再导回去啊!!!不然原数据导回去干嘛!!!)

但是,问题既然出现了,那肯定要解决嘛。于是,开始了一顿的搜索…肯定是没有搜索到,不然我就不写这个了(也可能是搜索得不到位O(∩_∩)O哈哈~)。

环境

easyexcel 2.2.6版本

找bug

现在下载了一个服务(使用easyexcel写的)导出的,没有经过修改的文件A.xlsx,然后复制了一份并命名B.xlsx.

现象: 

这里把两个文件后缀改成rar(压缩文件格式都可以)

然后进行了两个文件的对比,有了以下发现:

但是直接用office软件打开,不管哪个显示都是正常的,没有报错,数据也正常,说明它是兼容的,但是保存的时候,office会把A文件的存储格式转换为B文件

过程如图:

思路

我刚开始以为是easyexcel进行了数据或者文件压缩导致的,于是我搜索了下,没有任何有用的信息,浪费了我好一会儿时间。

解决

灵机一动,阿里的,应该有官方文档,搜索了下,真有官方文档

最终在文档在常见问题中找到了这个解决办法(当然,因为这里的业务是小模板数据填充,不涉及到大数据量,所以直接使用,如果有大数据量,按文档的解释是可能溢出的,各位按自己业务场景处理)。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文