Question

J'ai essayé d'utiliser JXL et Apache POI pour charger les données d'un fichier Excel, jusqu'à présent, le mécanisme JXL a bien fonctionné. Même si j'intégre des images dans le fichier.

J'ai reçu un dossier d'une source qui ne va pas, j'obtiens l'exception suivante avec 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)

Et avec Jxl, j'obtiens un index hors des limites

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)

Le fichier se charge dans Excel mais pas dans Open Office et la seule chose que je peux voir dans les données brutes est l'objet lié à Core 4.1 Adobe XMP ... qui semble être la cause du problème, si je supprime l'image, cela fonctionne bien ... si je colle un autre JPG dans son bien.

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

Existe-t-il un moyen d'ignorer cela? Comment pourrais-je analyser ce fichier.

Merci.

Était-ce utile?

La solution

Une chose à essayer est d'utiliser une version plus récente d'Apache POI - des bugs comme celui-ci sont corrigées au fil du temps.

Si la dernière version de POI n'aide pas (3.8 Beta 2 au moment de l'écriture), vous devez ouvrir un nouveau bug dans le POI Bugzilla et télécharger le fichier de problème. L'exception que vous voyez est causée par le POI croyant qu'il devrait y avoir une certaine quantité de données et en trouver plus. Avec le fichier, il sera possible d'identifier pourquoi ces données sont là et de les contourner. (C'est-à-dire en supposant qu'il n'a pas déjà été réparé!)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top