¿Cuál de las 2 API es más sencilla de leer / escribir / editar hojas de Excel? ¿Estas API no admiten extensiones CSV?
Usando JXL para file.xls y file.xlsx, obtengo una excepción como:
jxl.read.biff.BiffException: Unable to recognize OLE stream
at jxl.read.biff.CompoundFile.<init>(CompoundFile.java:116)
at jxl.read.biff.File.<init>(File.java:127)
at jxl.Workbook.getWorkbook(Workbook.java:268)
at core.ReadXLSheet.contentReading(ReadXLSheet.java:46)
at core.ReadXLSheet.init(ReadXLSheet.java:22)
at core.ReadXLSheet.main(ReadXLSheet.java:72)
Tanto para extensiones .xls como .xlsx. La versión de Java que estoy usando es: JDK1.6
java
excel
apache-poi
jxl
Swagatika
fuente
fuente
Respuestas:
He utilizado tanto JXL (ahora "JExcel") como Apache POI . Al principio usé JXL, pero ahora uso Apache POI.
Primero, aquí están las cosas en las que ambas API tienen la misma funcionalidad final:
Sin embargo, existen muchas diferencias:
Además, POI contiene no solo la API principal de "modelo de usuario", sino también una API basada en eventos si todo lo que desea hacer es leer el contenido de la hoja de cálculo.
En conclusión, debido a la mejor documentación, más funciones, desarrollo activo y compatibilidad con el formato Excel 2007+, utilizo Apache POI.
fuente
getContents()
método sucio en JExcelAPI me ahorra mucho tiempo. Con POI, debe verificar su tipo de celda, luego obtener su valor (si es una celda numérica, debe verificar si es una celda de fecha) de acuerdo con su tipo, y finalmente convertirlo a un valor de cadena con diferentes métodos, eso es muy inconveniente. No puedo imaginar que POI no proporcione un método tan sucio pero conveniente como lo hace JExcelAPI.He utilizado POI.
Si usa eso, esté atento a los formateadores de celda: cree uno y úselo varias veces en lugar de crear cada vez para la celda, es una gran diferencia de consumo de memoria o datos grandes.
fuente
No estoy familiarizado con JXL pero usamos POI. POI está bien mantenido y puede manejar tanto el formato .xls binario como el nuevo formato basado en xml que se introdujo en Office 2007.
Los archivos CSV no son archivos de Excel, son archivos basados en texto, por lo que estas bibliotecas no los leen. Deberá analizar un archivo CSV usted mismo. No conozco ninguna biblioteca de archivos CSV, pero tampoco he mirado.
fuente
Para leer archivos CSV "sin formato" en Java, hay una biblioteca llamada OpenCSV, disponible aquí: http://opencsv.sourceforge.net/
fuente