5

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        ">

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

ありがとう。

4

1 に答える 1

2

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

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

于 2011-04-10T16:35:31.663 に答える