Шрифт исчезает после определенного количества ячеек в 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 ответ:
Apache POI ограничен 32767 шрифтами на рабочую книгу
Вам нужно будет найти способ повторного использования шрифтов и стилей ячеек.