write tutorial read poi ooxml create java excel apache-poi

java - tutorial - poi-ooxml



Cómo obtener más de 255 columnas en una hoja de Excel utilizando Apache POI 3.6 (6)

Estoy creando un calendario en excel. La columna 1 es 01.01.2010 (dd.MM.yyyy), la columna 2 es 02.01.2010 y así sucesivamente.

Este es mi código:

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()); }

Cuando llego a la columna 256 POI lanza esta excepción:

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)

Encontré este informe de error que sugiere que se corrigió en la versión 3.6. Estábamos usando 3.5, pero cambiar a 3.6 no parece hacer ningún bien. ¿Alguien tiene algún consejo?

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

Edición: Parece que el problema del error era sobre fórmulas ...


Cómo obtener más de 255 columnas en una hoja de Excel utilizando el PDI de Apache
tratar

Workbook workbook = new XSSFWorkbook() <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId>`enter code here` <version>3.15</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.15</version> </dependency>



Las hojas de Excel anteriores a 2007 tenían una limitación de 256 columnas. Esas hojas también generan la extensión ".xls". Excel 2007 y en adelante pueden acomodar columnas de 16K, están basadas en un formato XML y generan el formato ".xlsx". El modelo de objetos de POI para las hojas anteriores a 2007 es org.apache.poi.hssf.usermodel mientras que el modelo de objetos para las hojas anteriores a 2007 es org.apache.poi.xssf.usermodel El paquete org.apache.poi.ss.usermodel proporciona una Interfaz uniforme que cubre ambos modelos de objetos. Entonces, para crear más de 256 columnas, tendrá que usar clases dentro del paquete org.apache.poi.xssf.usermodel o dentro de org.apache.poi.ss.usermodel .


Me lo imaginé. Tuve que cambiar de org.apache.poi.hssf.usermodel a org.apache.poi.ss.usermodel

Esto te permite usar columnas de 16k o algo así.


Podría considerar cambiar de vertical a horizontal (en otras palabras, transponer los datos) para poder usar 65k filas durante los días del año. Esto es exactamente lo que hice con un informe que requiere un gran número de columnas y un pequeño número de filas.

Alternativamente, puede dividir el año en sub periodos de 6 meses, cada uno en su propia hoja.

Ambas son soluciones provisionales, pero pueden proporcionarle una solución "suficientemente buena", según los requisitos que tenga.