【问题标题】:HSSFCell MissingCell Policy IssueHSSFCell MissingCell 政策问题
【发布时间】:2013-06-28 10:46:33
【问题描述】:

我正在尝试使用 java 读取 excel(.xls 和 .xlsx)。我能够正确阅读 xlsx。但是当我使用以下代码读取 xls 文件时

final HSSFCell cell = row.getCell(i, Row.RETURN_BLANK_AS_NULL);

我遇到错误

java.lang.NoSuchMethodError: org.apache.poi.hssf.usermodel.HSSFRow.getCell(ILorg/apache/poi/ss/usermodel/Row$MissingCellPolicy;)Lorg/apache/poi/hssf/usermodel/

请帮忙。我正在使用 poi-3.9-20121203.jar

【问题讨论】:

  • 您以前是否使用过任何旧版本的 POI。
  • 使用System.out.println(HSSFWorkbook.class.getProtectionDomain().getCodeSource().getLocation());找到链接的 poi 版本。

标签: excel apache-poi nosuchmethoderror poi-hssf


【解决方案1】:

Apache POI FAQ 对此进行了介绍。如果你看,你会发现你有一个旧的 Apache POI 副本潜伏在你的类路径的某个地方,所以你实际上是在运行两个版本的混合。这不受支持 - 所有 POI jar 都必须来自同一版本!

FAQ entry on the topic 有一些示例代码,您可以使用它来查找实际使用了哪个 Jar,这样您就可以找到那个较旧的 jar。你会想做这样的事情:

ClassLoader classloader =
   org.apache.poi.poifs.filesystem.POIFSFileSystem.class.getClassLoader();
URL res = classloader.getResource(
             "org/apache/poi/poifs/filesystem/POIFSFileSystem.class");
String path = res.getPath();
System.out.println("Core POI came from " + path);

这将打印出核心 POI 类之一的来源,当它报告您期望的 jar 时应该没问题!

【讨论】:

    猜你喜欢
    • 2021-06-05
    • 2020-12-23
    • 2011-05-08
    • 2020-01-15
    • 2021-06-24
    • 1970-01-01
    • 1970-01-01
    • 2021-01-30
    相关资源
    最近更新 更多