java - JXL 和 Apache POI 解析带有附加图像对象的 excel

标签 java excel ole apache-poi jxl

我曾尝试使用 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,我在原始数据中唯一能看到的是 Adob​​e 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 认为应该有一定数量的数据并找到更多数据引起的。有了这个文件,就可以确定数据存在的原因,并解决它。 (也就是说,假设它还没有被修复!)

关于java - JXL 和 Apache POI 解析带有附加图像对象的 excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1457390/

相关文章:

crystal-reports - Crystal Reports 更改数据源

java - System.in.read() 被跳过而不提示输入

java - 如何通过反射减少IF-ELSE的使用?我可以得到代码示例吗

java - PassiveExpiringMap 不会使对象过期

java - 由于 ActionListener,JComboBox 未刷新/更新

java - 通过 Excel 打开带有 UTF-8 BOM 的 CSV

vba - 无需打开工作簿即可访问内置文档属性信息

java - 将 SXSSF 保存为 .xls 文件

delphi - 如何使用Delphi和com接口(interface)更新ODT文档中的 "table of contents"

vba - 验证 xls 文件是否包含 VBA 宏,而无需在 MS Excel 中打开它