我曾尝试使用 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,我在原始数据中唯一能看到的是 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 ">
有什么办法可以忽略这个吗?我将如何解析这个文件。
谢谢。
最佳答案
可以尝试的一件事是使用更新版本的 Apache POI - 像这样的错误会随着时间的推移得到修复。
如果最新版本的 POI 没有帮助(撰写本文时为 3.8 beta 2),您应该在 POI bugzilla 中打开一个新错误,并上传问题文件。您看到的异常是由 POI 认为应该有一定数量的数据并找到更多数据引起的。有了这个文件,就可以确定数据存在的原因,并解决它。 (也就是说,假设它还没有被修复!)
关于java - JXL 和 Apache POI 解析带有附加图像对象的 excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1457390/