Как исправить сбой функции SpreadSheetAddRows при добавлении большого запроса?
EDIT3: благодаря помощи @Leigh I 'Мы сузили проблему до столбцов даты в запросе. При использовании исходного кодового набора и POI страница падает, когда SpreadSheetAddRows () пытается добавить очень большой запрос, содержащий ячейки, похожие на даты. Я'мы сделали сообщение об ошибке здесь:https://bugbase.adobe.com/index.cfm?event=bug&ID = 3432184.
У меня есть запрос, который я добавляю к объекту электронной таблицы, который кажется ошибочным, когда в запросе слишком много строк (18583 в этом примере). Точная ошибка заключается в следующем:
java.lang.ArrayIndexOutOfBoundsException: -32735
at java.util.ArrayList.get(ArrayList.java:324)
at org.apache.poi.hssf.model.WorkbookRecordList.get(WorkbookRecordList.j ava:50)
at org.apache.poi.hssf.model.Workbook.getExFormatAt(Workbook.java:787)
at org.apache.poi.hssf.usermodel.HSSFCell.getCellStyle(HSSFCell.java:901 )
at org.apache.poi.hssf.usermodel.HSSFSheet.autoSizeColumn(HSSFSheet.java :1727)
at coldfusion.excel.Excel.autoResize(Excel.java:1246)
at coldfusion.excel.Excel.autoResize(Excel.java:1240)
at coldfusion.excel.Excel.addRows(Excel.java:1214)
at coldfusion.runtime.CFPage.SpreadSheetAddRows(CFPage.java:7089) at coldfusion.runtime.CFPage.SpreadSheetAddRows(CFPage.java:7076)
Вот'соответствующий код:
РЕДАКТИРОВАТЬ: я использовал cfspreadsheet ранее с успехом, но он не создает электронную таблицу с заголовками (а также имеет недостаток в необходимости создания временного файла для обслуживания).
РЕДАКТИРОВАТЬ 2: После предложения @Leigh я обновил POI в своей папке CF9 / lib. Ошибки теперь изменились на следующие:
Выдает следующее сообщение: org.apache.poi.hssf.util.HSSFColor.getIndexHash () Ljava / util / Hashtable;
Код ошибки:
java.lang.NoSuchMethodError:
org.apache.poi.hssf.util.HSSFColor.getIndexHash()Ljava/util/Hashtable;
at coldfusion.excel.Excel.getHSSFColor(Excel.java:2094)
at coldfusion.excel.Excel.findFont(Excel.java:2237)
at coldfusion.excel.Excel.getCellStyle(Excel.java:2318)
at coldfusion.excel.Excel.formatRow(Excel.java:2948)
at coldfusion.excel.Excel.formatRow(Excel.java:2963)
at coldfusion.excel.Excel.formatRow(Excel.java:2981)
at coldfusion.runtime.CFPage.SpreadSheetFormatRow(CFPage.java:7268)
Комментируя эту строку, теперь она снова вылетает:
Код ошибки:
java.lang.IllegalStateException: The maximum number of cell styles was exceeded. You can define up to 4000 styles in a .xls workbook
at org.apache.poi.hssf.usermodel.HSSFWorkbook.createCellStyle(HSSFWorkbook.java:1120)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.createCellStyle(HSSFWorkbook.java:73)
at coldfusion.excel.Excel.addRow(Excel.java:1323)
at coldfusion.excel.Excel.addRows(Excel.java:1203)
at coldfusion.runtime.CFPage.SpreadSheetAddRows(CFPage.java:7089)
at coldfusion.runtime.CFPage.SpreadSheetAddRows(CFPage.java:7076)