使用Apache POI在Excel中的一定数量的单元格后字体消失

时间:2015-06-30 19:32:58

标签: java apache-poi

当尝试从旧的Excel文件复制单元格样式时,在写入32357单元格后,字体消失,当找到问题的根源时,我遇到了错误,它抛出了这个:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -32768
    at java.util.ArrayList.elementData(ArrayList.java:400)
    at java.util.ArrayList.get(ArrayList.java:413)
    at org.apache.poi.xssf.model.StylesTable.getFontAt(StylesTable.java:210)
    at org.apache.poi.xssf.usermodel.XSSFCellStyle.getFont(XSSFCellStyle.java:561)
    at Compare.writeRows(Compare.java:415)
    at Compare.main(Compare.java:44)

并复制旧Excel文件中的CellStyle,我这样做了:

XSSFCellStyle style = workbook.createCellStyle();
style.cloneStyleFrom(oldCell.getCellStyle());
newCell.setCellStyle(style);
style.getFont(); //throws error here
newCell.setCellType(oldCell.getCellType());

但我不明白为什么会这样做,因为当我rows.get(2506).getCell(2).getCellStyle().getFont()时,它会返回一个XSSFFont对象(XSSFFont style.getFont()应该返回)并且不会抛出Exception

如果有人可以帮我解决这个问题,我真的很感激。

1 个答案:

答案 0 :(得分:3)

Apache POI is limited to 32767 Fonts per workbook

您需要找到一种重用字体和单元格样式的方法。