poi处理excel文件出现单元格样式太多的问题

前言:项目运行一段时间后,同事反馈说excel的单元格样式没有了,我心想怎么可能呢,结果把线上的文件拿出来一打开,提示恢复工作簿内容。如图:

poi处理excel文件出现单元格样式太多的问题_第1张图片

文件打开提示

接着点击“是”进入

poi处理excel文件出现单元格样式太多的问题_第2张图片

单元格样式丢失

样式全部丢失了。什么情况,马上本地写了测试的执行看看,发现当行数小于5700行(这是本人测试的,可能别人是别的行数)时,是正常的,但是一超过这个行数立马样式消失。网上百度了一下,说是我创建的style太多了,一看代码,的确是,因为我style都是在循环里面创建的。应该拿到循环外面统一创建。

poi处理excel文件出现单元格样式太多的问题_第3张图片

创建样式

从我截取的代码中可以看得出,我这里肯定处理的不对,造成频繁的创建style,修改办法是创建HashMap进行缓存,用到的时候在这里拿取。

poi处理excel文件出现单元格样式太多的问题_第4张图片

将必用的样式缓存在map中

poi处理excel文件出现单元格样式太多的问题_第5张图片

用时通过key来获取

修改成这样,此问题解决了。如图:

poi处理excel文件出现单元格样式太多的问题_第6张图片

样式不消失了

多循环些,看看数据量1w行时

poi处理excel文件出现单元格样式太多的问题_第7张图片

1w行

仍然没有出现问题。

总结:

  1. 因为excel不能支持太多的样式,而且项目中也没有很多样式,造成样式多,完全是因为在for循环中,创建了一些重复的样式造成的。
  2. 还有这样频繁的创建样式也造成了性能问题。

你可能感兴趣的:(poi)