EDIT3: Grâce à l'aide de @Leigh, j'ai réduit le problème aux colonnes de date dans la requête. En utilisant le jeu de code d'origine et POI, la page plante lorsque SpreadSheetAddRows() tente d'ajouter une requête très volumineuse contenant des cellules de type date. J'ai fait un rapport de bug ici: https://bugbase.adobe.com/index.cfm?event=bug&id=3432184.
J'ai une requête que j'ajoute à un objet feuille de calcul qui semble générer une erreur lorsque la requête contient un nombre considérablement élevé de lignes (18583 dans cet exemple). L'erreur exacte est la suivante:
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)
Voici le code pertinent:
EDIT: J'ai déjà utilisé cfspreadsheet avec succès, mais cela ne produit pas de feuille de calcul avec des en-têtes (et a également l'inconvénient de devoir créer un fichier temporaire pour le servir.)
EDIT2: Suite à la suggestion de @Leigh, j'ai mis à jour le POI dans mon dossier CF9/lib. Les erreurs sont maintenant les suivantes:
Donne le message suivant: org.apache.poi.hssf.util.HSSFColor.getIndexHash()Ljava/util/Hashtable;
Code d'erreur:
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)
En commentant cette ligne, cela plante à nouveau sur:
Code d'erreur:
java.lang.IllegalStateException: Le nombre maximum de styles de cellules a été dépassé. Vous pouvez définir jusqu'à 4000 styles dans un classeur .xls
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)