微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

poi excel导出,并发导出文件打开时,提示文件可能已损坏或不安全

excel打开时错误界面:

 

日志显示错误内容:五花八门

我验证到的错误信息有:

This Style does not belong to the supplied Workbook. Are you trying to assign a style from one workbook to the cell of a differnt workbook?

cell column is out of range、

Maximum number of fonts was exceeded  等等

 

问题原因:

首先网上说的修改代码中的  cell.setCellStyle(style)   为   cell.getCellStyle().clonestyleFrom(style)  并不管用,反正我测的是不管用。

然后再来看我的导出类,发现里面定义了很多全局变量

 

 

那所有spring管理的类,在程序启动后只会有一个实例,如下图,带有@Component的就是spring管理的类。

 

只有一个实例的情况下,在类的内部定义全局变量,就会导致在并发情况下,各个请求对全局变量的操作互相冲突,从而报各种错误

所以在这种类中,尽量不用全局变量,当然带static final的没问题,这种是常量。

所以我把所有的全局变量改为了启动方法的私有变量,然后在方法之间互相传递,如下图

 

 

这样,问题就从根本上解决了。 

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐