Я создаю календарь в Excel. Столбец 1 01.01.2010 (dd. MM.yyyy), Столбец 2 01.02.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, выдает это исключение:
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.(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 или что-то в этом роде.
Вы можете подумать о переключении с книжной на альбомную (другими словами, перенос данных), чтобы вы могли использовать 65 000 строк в течение нескольких дней в году . Это именно то, что я сделал с отчетом, требующим большого количества столбцов и небольшого количества строк.
В качестве альтернативы вы можете разделить год на 6-месячные подпериоды, каждый на отдельном листе.
Это временные решения, но они могут предоставить вам «достаточно хорошее» решение в зависимости от ваших требований.
Возможно, ваша проблема в Excel, а не в API.
Максимальное количество столбцов в электронной таблице до Excel 2007 - 256.