0

我正在尝试使用 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

4

1 回答 1

1

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

关于该主题的常见问题解答条目有一些示例代码,您可以使用它来查找实际使用的 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 时!

于 2013-07-01T13:21:42.367 回答