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,然后你的代码就没问题了!
我在处理 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,然后你的代码就没问题了!