Шрифт исчезает после определенного количества ячеек в Excel с помощью 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)

И чтобы скопировать CellStyle из старого файла Excel, я сделал следующее:

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 3

1 ответ:

Apache POI ограничен 32767 шрифтами на рабочую книгу

Вам нужно будет найти способ повторного использования шрифтов и стилей ячеек.