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

要尝试的一件事是使用较新版本的 Apache POI - 这样的错误会随着时间的推移而得到修复。

如果最新版本的 POI 没有帮助(撰写本文时为 3.8 beta 2),您应该在 POI bugzilla 中打开一个新错误,并上传问题文件。您看到的异常是由 POI 认为应该有一定数量的数据并找到更多数据引起的。有了这个文件,就可以确定数据存在的原因,并解决它。(也就是说,假设它还没有被修复!)

于 2011-04-10T16:35:31.663 回答