Ответ 1
Я понял это. Мне пришлось переключиться с org.apache.poi.hssf.usermodel на org.apache.poi.ss.usermodel
Это позволяет использовать столбцы 16k или что-то в этом роде.
Я создаю календарь в 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
Изменить: похоже, проблема с ошибкой касалась формул.
Я понял это. Мне пришлось переключиться с org.apache.poi.hssf.usermodel на org.apache.poi.ss.usermodel
Это позволяет использовать столбцы 16k или что-то в этом роде.
Листы предварительного листа 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
.
Возможно, проблема связана с Excel, а не с вашим API.
Максимальное количество столбцов в электронной таблице pre-Excel 2007 равно 256.
Возможно, вы захотите переключиться с портрета на пейзаж (другими словами, перенести данные), чтобы вы могли использовать 65 тыс. строк в течение нескольких дней в году. Это именно то, что я сделал с отчетом, требующим большого количества столбцов и небольшого количества строк.
В качестве альтернативы вы можете разделить год на 6-месячные вспомогательные периоды, каждый на своем листе.
Это обе временные решения, но могут предоставить вам "достаточно хорошее" решение, в зависимости от ваших требований.
Это потому, что Excel имеет ограниченные номера столбцов Смотрите это: http://office.microsoft.com/en-us/excel-help/excel-specifications-and-limits-HP005199291.aspx