2009-09-21 14 views
5

Ich habe versucht mit JXL und Apache POI Daten aus einer Excel-Datei zu laden, bis jetzt der JXL-Mechanismus hat gut funktioniert. Auch wenn ich ein Bild in die Datei einbette.JXL und Apache POI Parsing Excel mit angehängten Bildobjekten

erhielt ich eine Datei von einer Quelle, die gewohnt analysieren, ich die folgende Ausnahme mit POI

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) 

und mit jxl bekommen bekomme ich einen Index außerhalb der Grenzen

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) 

Die Datei lädt in Excel, aber nicht in Open Office und das einzige, was ich in den Rohdaten sehen kann, ist das Adobe XMP Core 4.1 verwandte Objekt ... das scheint die Ursache des Problems zu sein, wenn ich das Bild entfernen, funktioniert es gut ... wenn Ich halte ein anderes JPG in seiner Ordnung.

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

Gibt es eine Möglichkeit, dies zu ignorieren? Wie würde ich diese Datei analysieren?

Danke.

Antwort

2

Eine Sache zu versuchen, ist eine neuere Version von Apache POI zu verwenden - Bugs wie diese werden im Laufe der Zeit behoben.

Wenn die neueste Version von POI nicht hilft (3.8 Beta 2 zum Schreiben), sollten Sie einen neuen Fehler im POI Bugzilla öffnen und die Problemdatei hochladen. Die Ausnahme, die Sie sehen, wird dadurch verursacht, dass POI glaubt, dass eine bestimmte Datenmenge vorhanden sein muss, und dass Sie mehr finden. Mit der Datei wird es möglich sein zu erkennen, warum diese Daten da sind und umgehen. (Das heißt, vorausgesetzt, es wurde nicht bereits behoben!)