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

java poi EXCEL导出

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


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

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

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


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

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

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

就像以下写法:


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


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

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

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

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

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

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

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


解决方法

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

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

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