POI:意外的loggingtypesorg.apache.poi.hssf.record.HyperlinkRecord

我正在处理一个简单的任务:读取Excel文件并将其转换为对象。 虽然,我在阅读Excel文件(.xls)时遇到问题,我将从外部系统接收它(也许它们会自动生成它)。 如果我打开它,只是做一个简单的保存(有或没有改变Excel文件中的任何东西),我的分析器逻辑工作正常。 但是,如果我不编辑和保存文件,并尝试parsing原始文件,我在加载.xls文件时在这一行得到一个exception:

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) 

我已经search了可能的解决scheme; 但从来没有find任何! 有人能带我解决这个问题吗?

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

谢谢

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

  • 请确保您使用最新版本的POI(3.13),因为可能存在一些错误修正
  • 将问题报告给正在生成文件的应用程序,以使其以更标准的方式提供文件
  • 使用不合格的示例文件向Apache POI报告问题