Excel 处理在 .xlsx 文件的公式计算器上引发异常 'NoSuchMethodError'

Excel processing throws exception 'NoSuchMethodError' on Formula Evaluator for .xlsx file

我在处理 excel 个文件时遇到问题。 excel 的处理对于 .xls 文件工作正常。 但它在公式计算器上处理 .xlsx 文件时抛出以下异常。是否有一种通用方法来获取 .xls 和 xlsx 的公式计算器或需要编写单独的代码?我正在使用 poi-3.10.1

异常就在下面的代码处:

FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();

它抛出以下异常:

Caused by: java.lang.NoSuchMethodError: org.apache.poi.ss.formula.WorkbookEvaluator.<init>(Lorg/apache/poi/ss/formula/EvaluationWorkbook;Lorg/apache/poi/ss/formula/IStabilityClassifier;Lorg/apache/poi/hssf/record/formula/udf/UDFFinder;)V
    at org.apache.poi.xssf.usermodel.XSSFFormulaEvaluator.<init>(XSSFFormulaEvaluator.java:64)
    at org.apache.poi.xssf.usermodel.XSSFFormulaEvaluator.<init>(XSSFFormulaEvaluator.java:51)
    at org.apache.poi.xssf.usermodel.XSSFCreationHelper.createFormulaEvaluator(XSSFCreationHelper.java:51)
    at org.apache.poi.xssf.usermodel.XSSFCreationHelper.createFormulaEvaluator(XSSFCreationHelper.java:21)

有一个Apache POI FAQ entry on this very topic. Basically, you have a mixture of old and new POI jars on your classpath, which is confusing things and is explicitly not a supported option

您需要检查您的类路径,并删除所有旧的或不匹配的 POI jar,只留下来自最新 Apache POI 版本的 jar。如果你不知道你使用的是什么罐子,你可以使用 the code in the FAQ entry 来帮助你找出

所有旧的 jar 都消失了,添加最新的(currently 3.12), including their dependencies if not using Maven,然后你的代码就没问题了!