JXL и Apache POI SAINING Excel с прикрепленными объектами изображения

StackOverflow https://stackoverflow.com/questions/1457390

Вопрос

Я пытался использовать JXL и Apache POI для загрузки данных из файла Excel, до сих пор механизм JXL работал нормально. Даже если я внедряю изображения в файл.

Я получил файл из источника, который не будет разобрать, я получаю следующее исключение с 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)

И с JXL я получаю указатель за пределами границ

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)

Файл загружается в Excel, но не в Open Office, и единственное, что я вижу в данных RAW, - это связанный объект Adobe XMP Core 4.1 ... что кажется причиной проблемы, если я удаляю изображение, он работает нормально ... если я вставлю еще один jpg в штраф.

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

Есть ли способ игнорировать это? Как бы я проанализировал этот файл.

Спасибо.

Это было полезно?

Решение

Одна вещь, которую нужно попробовать, это использование более новой версии Apache Poi - подобные ошибки, подобные этому, зафиксируются с течением времени.

Если последняя версия POI не помогает (3.8 Beta 2 на момент написания), вы должны открыть новую ошибку в Poi Bugzilla и загрузить файл проблемы. Исключение, которое вы видите, вызвано тем, что POI считает, что должно быть определенное количество данных, и найти больше. С помощью файла можно будет определить, почему эти данные там, и обойти их. (То есть при условии, что это еще не было исправлено!)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top