其他分享
首页 > 其他分享> > poi excel导出,并发导出文件打开时,提示文件可能已损坏或不安全

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的没问题,这种是常量。

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

 

 

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

 

标签:文件,style,spring,导出,cell,已损坏,workbook,全局变量
来源: https://www.cnblogs.com/gongjing999/p/16416892.html