2009-09-21 23 views
5

He intentado utilizar JXL y Apache POI para cargar datos de un archivo de Excel, hasta ahora el mecanismo JXL ha funcionado bien. Incluso si incrusto una imagen en el archivo.JXL y Apache POI analizando Excel con objetos de imagen adjuntos

he recibido un archivo de una fuente que suele analizo, me sale el siguiente excepción con PDI

Exception in thread "main" org.apache.poi.hssf.record.RecordInputStream$LeftoverDataException: Initialisation of record 0xE2 left 2 bytes remaining still to be read. 
    at org.apache.poi.hssf.record.RecordInputStream.hasNextRecord(RecordInputStream.java:124) 
    at org.apache.poi.hssf.record.RecordFactory.createRecords(RecordFactory.java:402) 
    at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:277) 
    at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:202) 
    at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:184) 
    at testXlsParsers.main(TestXlsParsers.java:19) 

y con jxl puedo obtener un índice fuera de límites

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 
    at java.util.ArrayList.RangeCheck(ArrayList.java:546) 
    at java.util.ArrayList.get(ArrayList.java:321) 
    at jxl.read.biff.WorkbookParser.getSheet(WorkbookParser.java:247) 
    at ParserXLS.parse(ParserXLS.java:27) 
    at ParserXLS.main(ParserXLS.java:46) 

Se carga el archivo en sobresalen pero no en la oficina abierta y lo único que puedo ver en los datos sin procesar es el objeto relacionado Adobe XMP Core 4.1 ... que parece ser la causa del problema, si elimino la imagen funciona bien ... si pego otro jpg en su multa.

<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.1-c036 46.277092, Fri Feb 23 2007 14:16:18  "> 

¿Hay alguna manera de hacer caso omiso de esto? ¿Cómo voy a analizar este archivo?

Gracias.

Respuesta

2

Una cosa para intentar es usar una versión más nueva de Apache POI: errores como este se solucionan con el tiempo.

Si la última versión de POI no ayuda (3.8 beta 2 en el momento de la escritura), debe abrir un nuevo error en el POI bugzilla y cargar el archivo problemático. La excepción que está viendo es causada por POI que cree que debería haber una cierta cantidad de datos y encontrar más. Con el archivo, será posible identificar por qué esa información está allí y solucionarla. (Es decir, ¡suponiendo que todavía no se ha solucionado!)

Cuestiones relacionadas