jxlとapache poiは、添付の画像オブジェクトを備えたエクセル
-
12-09-2019 - |
質問
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によって引き起こされ、さらに多くを見つけることが原因です。ファイルを使用すると、そのデータがそこにある理由を特定し、それを回避することができます。 (つまり、まだ修正されていないと仮定してください!)
所属していません StackOverflow