0

我创建了一个工作簿并想要评估所有公式:

Workbook wbTemp = new HSSFWorkbook(inp);

//do workbook stuff here

wbTemp.getCreationHelper().createFormulaEvaluator().evaluateAll();

我收到此错误:

The method evaluateAll() is undefined for the type FormulaEvaluator

当它在这里清楚地说明 evaluateAll 是现有方法时。可能是什么原因造成的?

4

1 回答 1

1

您几乎可以肯定在您的类路径中有两个 POI 副本。一个是包含您要使用的功能的最新版本。另一个是旧版本,没有,而且您的系统似乎更喜欢旧版本......

这是一个很常见的问题,POI FAQ 涵盖了这种情况。理想情况下,只需查看您的类路径,并尝试识别更旧的 POI jar。但是,如果这不起作用,请尝试 POI FAQ 中的这段代码:

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 的文件名,因此您可以确定旧副本的来源并删除它!

于 2012-07-01T15:45:34.887 回答