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循环内直接引用