JXL和Apache POI解析带有附加图像对象的Excel

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中加载,但无法在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        ">

有没有办法忽略这个?我该如何解析这个文件。谢谢。
1个回答

2

有一件事可尝试,那就是使用更新版本的Apache POI - 这样的错误随着时间的推移会得到修复。

如果最新版本的POI没有帮助(截至撰写本文为3.8 beta 2),您应该在POI bugzilla中打开一个新的bug,并上传问题文件。您看到的异常是由于POI认为应该有一定数量的数据,但实际上发现了更多数据。有了文件,就可以确定为什么存在这些数据,并解决它们。(也就是说,假设它还没有被修复!)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接