【问题标题】:POI: Unexpected record type org.apache.poi.hssf.record.HyperlinkRecordPOI:意外的记录类型 org.apache.poi.hssf.record.HyperlinkRecord
【发布时间】:2015-08-27 09:49:03
【问题描述】:

我正在处理一个简单的任务:读取 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,但没有成功!

谢谢

【问题讨论】:

  • 这个文件是怎么生成的?来自 Excel?还是来自其他工具?
  • 文件将以编程方式生成。
  • 来自什么软件?
  • 可能是 Java。我完全不确定!
  • 您好,请问有人可以提供帮助吗?

标签: excel apache-poi row


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-29
    • 2019-12-04
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-17
    相关资源
    最近更新 更多