POI:意外的记录类型org.apache.poi.hssf.record.HyperlinkRecord

时间:2015-06-11 15:33:01

标签: excel apache-poi row

我正在完成一项简单的任务:读取Excel文件并将其转换为对象。虽然,我在阅读Excel文件(.xls)时遇到问题 我将从外部系统接收它(也许他们自动生成它)。如果我打开它只是做一个简单的保存(有或没有改变Excel文件中的任何内容),我的解析器逻辑工作正常。但是,如果我不编辑并保存文件并尝试按原样解析原始文件,则在加载.xls文件时,此行会出现异常:

HSSFWorkbook xlsWorkbook = new HSSFWorkbook(inputDocument);

以下是例外情况:

java.lang.RuntimeException: Unexpected record type (org.apache.poi.hssf.record.HyperlinkRecord)
at org.apache.poi.hssf.record.aggregates.RowRecordsAggregate.<init>(RowRecordsAggregate.java:97)
at org.apache.poi.hssf.model.InternalSheet.<init>(InternalSheet.java:217)
at org.apache.poi.hssf.model.InternalSheet.createSheet(InternalSheet.java:156)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:337)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:289)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:224)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:382)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:364)

我搜索了可能的解决方案;但从来没有找到任何!有人能引导我解决它吗?

PS:我甚至尝试使用最新版本的POI(3.12)加载.xls但没有成功!

由于

1 个答案:

答案 0 :(得分:1)

https://bz.apache.org/bugzilla/show_bug.cgi?id=52447处的讨论表明,这可能是由Microsoft Excel似乎正常处理的非标准Excel文件引起的,但Apache POI可能会阻塞。您可以尝试以下事项:

  • 确保使用最新版本的POI(3.13),因为有许多可能相关的错误修正
  • 向生成该文件的应用程序报告问题,以尝试以更标准的方式提供文件
  • 向Apache POI报告问题,其中包含一个失败的示例文件