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