ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-06-27 18:01:24  阅读:247  来源: 互联网

标签:文件 style spring 导出 cell 已损坏 workbook 全局变量


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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有