java poi EXCEL导出 “此文件中的某些文本格式可能已经更改,因为它已经超出最多允许的字体数。关闭其他文档再试一次可能有用”

java poi EXCEL导出

“此文件中的某些文本格式可能已经更改,因为它已经超出最多允许的字体数。关闭其他文档再试一次可能有用”


从数据库中拿到数据,作为excel导出。大多数情况下数据会是个List。

for循环遍历拿到的数据List作为excel导出,为了使导出的excel不那么丑陋,经常会在导出时为excel的数据列加些样式。如,对齐方式,字体,边框等等


设置每一列数据的样式时,

如果你的设置样式是专门抽出一个方法来实现的,且将HSSFWorkbook作为变量传入进去,

直接在for循环内部创建样式的

就像以下写法:



那么输出来的excel文件将会提示

“此文件中的某些文本格式可能已经更改,因为它已经超出最多允许的字体数。关闭其他文档再试一次可能有用”

且输出来的文件所占硬盘空间也将变得格外的大

因为你这样做,是每一行的每一列去用HSSFWorkbook创建了一个createCellStyle

假若客户要求导出的excel既有样式又要有字体大小,且假定从库中拿到的数据List为10000条,每条4个字段,那么create的次数:(4*2)*10000

真正的生产环境,导出的数据每条中的字段要比4个多的多,这将是非常严重的错误!


解决方法

for循环外提前建好,for循环内直接引用

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。