这个错误是由于导出的数据量变大,多次创建字体样式而导致的;数据量小的时候不会报错。
所以解决办法就是把字体样式的创建、设置放到循环外面,循环调用就可以了。
具体代码如下:
Wrong :
for (int i = 0; i < 10000; i++) {
Row row = sheet.createRow(i);
Cell cell = row.createCell((short) 0);
CellStyle style = workbook.createCellStyle();
Font font = workbook.createFont();
font.setBoldweight(Font.BOLDWEIGHT_BOLD);
style.setFont(font);
cell.setCellStyle(style);
}
Correct:
<span style="color:#ff0000;">CellStyle style = workbook.createCellStyle();
Font font = workbook.createFont();
font.setBoldweight(Font.BOLDWEIGHT_BOLD);
style.setFont(font);
for (int i = 0; i < 10000; i++) {
Row row = sheet.createRow(i);
Cell cell = row.createCell((short) 0);
cell.setCellStyle(style);
</span>
}
Note : LOC of creating fonts is inside the loop , because when you are writing the records to the row.