質問

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にロードされますが、オープンオフィスにはありません。生データで確認できるのは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        ">

これを無視する方法はありますか?このファイルを解析するにはどうすればよいですか。

ありがとう。

役に立ちましたか?

解決

試してみることの1つは、Apache Poiの新しいバージョンを使用することです。このようなバグは時間の経過とともに修正されます。

POIの最新バージョンが役に立たない場合(執筆時点で3.8ベータ2)、POI bugzillaで新しいバグを開き、問題ファイルをアップロードする必要があります。あなたが見ている例外は、特定の量のデータがあるべきであると信じているPOIによって引き起こされ、さらに多くを見つけることが原因です。ファイルを使用すると、そのデータがそこにある理由を特定し、それを回避することができます。 (つまり、まだ修正されていないと仮定してください!)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top