The maximum number of Cell Styles was exceeded. You can define up to 64000 style in a .xlsx Workbook 创建单元格样式时,有64000个单元格创建了单元格样式,导致报错
如题,创建单元格样式时,有64000个单元格创建了单元格样式,导致报错,网上对此问题回复大都是 “创建单元格放在for循环外面”,那一个实例的情况下但凡有一个单元格修改样式就会覆盖其它所有,显然是解决不了问题的。
这个关键点在于 workbook.createCellStyle();
看源码:
每次创建会计数,大于 MAXIMUM_STYLE_ID
这个常量就会抛异常
接着看CellStyle子类只有2个:
且都实现了 org.apache.poi.common.Duplicatable
接口
这里有个copy方法且子类都有实现,那么只需要创建一个实例然后copy(),跳过workbook.createCellStyle();
的计数,就不会超出 MAXIMUM_STYLE_ID
常量了
修改后代码:
稍加改造下就可以解决这个问题