Подтвердить что ты не робот

Как получить более 255 столбцов на листе Excel с помощью Apache POI 3.6

Я создаю календарь в excel. Столбец 1 - 01.01.2010 (dd.MM.yyyy), колонка 2 - 02.01.2010 и т.д.

Это мой код:

int day_cell = 0;

for(int i = 0; i < days.size(); i++)
{
     Date day = days.get(i);

     HSSFCell cell = row.createCell(day_cell++);
     cell.setCellValue(day.toString());
}

Когда я получаю столбец 256 POI, это исключение:

java.lang.IllegalArgumentException: Invalid column index (256).  Allowable column range for BIFF8 is (0..255) or ('A'..'IV')
at org.apache.poi.hssf.usermodel.HSSFCell.checkBounds(HSSFCell.java:926)
at org.apache.poi.hssf.usermodel.HSSFCell.<init>(HSSFCell.java:162)
at org.apache.poi.hssf.usermodel.HSSFRow.createCell(HSSFRow.java:141)
at org.apache.poi.hssf.usermodel.HSSFRow.createCell(HSSFRow.java:119)

Я нашел этот отчет об ошибке, в котором говорится, что он был исправлен в версии 3.6. Мы использовали 3.5, но переход на 3.6 не кажется хорошим. Кто-нибудь получил подсказки?

https://issues.apache.org/bugzilla/show_bug.cgi?id=46806

Изменить: похоже, проблема с ошибкой касалась формул.

4b9b3361

Ответ 1

Я понял это. Мне пришлось переключиться с org.apache.poi.hssf.usermodel на org.apache.poi.ss.usermodel

Это позволяет использовать столбцы 16k или что-то в этом роде.

Ответ 2

Листы предварительного листа Pre-2007 имели ограничение в 256 столбцов. Эти листы также генерируют расширение ".xls". Excel 2007 и далее могут вмещать 16 тыс. Столбцов, основаны на формате XML и генерируют формат ".xlsx". Объектная модель объекта POI для листов до 2007 года составляет org.apache.poi.hssf.usermodel, тогда как объектная модель для листов на 2007 год составляет org.apache.poi.xssf.usermodel Пакет org.apache.poi.ss.usermodel обеспечивает единый интерфейс, охватывающий обе модели объектов. Таким образом, чтобы создать более 256 столбцов, вам придется использовать классы в пакете org.apache.poi.xssf.usermodel или в пределах org.apache.poi.ss.usermodel.

Ответ 4

Возможно, вы захотите переключиться с портрета на пейзаж (другими словами, перенести данные), чтобы вы могли использовать 65 тыс. строк в течение нескольких дней в году. Это именно то, что я сделал с отчетом, требующим большого количества столбцов и небольшого количества строк.

В качестве альтернативы вы можете разделить год на 6-месячные вспомогательные периоды, каждый на своем листе.

Это обе временные решения, но могут предоставить вам "достаточно хорошее" решение, в зависимости от ваших требований.