gpt4 book ai didi

java - 通过 Apache POI 读取 XLSM 工作簿时出现异常

转载 作者:太空宇宙 更新时间:2023-11-04 08:22:23 25 4
gpt4 key购买 nike

我正在尝试使用 Apache POI 库 (3.8-beta5) 读取 .xlsm 文件:

Workbook wb = null;
try {
wb = WorkbookFactory.create(isXLSFile);
} catch (IOException e) {
...

没什么复杂的。虽然通常文档都可以很好地阅读,但有一个文档会引发异常:

Caused by: java.lang.IllegalStateException: A sheet hyperlink must either have a location, or a relationship. Found:
<xml-fragment ref="H13" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac"/>
at org.apache.poi.xssf.usermodel.XSSFHyperlink.<init>(XSSFHyperlink.java:72)
at org.apache.poi.xssf.usermodel.XSSFSheet.initHyperlinks(XSSFSheet.java:250)
at org.apache.poi.xssf.usermodel.XSSFSheet.read(XSSFSheet.java:203)
at org.apache.poi.xssf.usermodel.XSSFSheet.onDocumentRead(XSSFSheet.java:175)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.onDocumentRead(XSSFWorkbook.java:260)
at org.apache.poi.POIXMLDocument.load(POIXMLDocument.java:159)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:174)
at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:67)

有趣的是,如果我在 LibreOffice 中打开文件(我的机器上没有 MS Office)并重新保存它(保持格式),则文档可以正常读取。据我了解,这个问题与文档结构的有效性有关 - 所以这是数据问题,而不是库代码中的错误(或者不是吗?)。但也许有办法抑制此类错误?

[更新]对已接受答案的评论中提到的修复已集成到 2012 年 3 月 26 日发布的 Apache POI 3.8 版本中。

最佳答案

我刚刚在 Google Refine 错误报告中从用户那里收到了这样的文件。我的结论是,这是一个 Apache POI 错误,他们提示未使用的引用过于严格。此外,抛出 RuntimeException 而不是声明的(检查的)异常是一种粗鲁的行为。我已提交此错误报告:https://issues.apache.org/bugzilla/show_bug.cgi?id=52716

关于java - 通过 Apache POI 读取 XLSM 工作簿时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9276738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com