Excel Apache POI公式计算器未计算包含公式的单元格

Excel Apache POI公式计算器未计算包含公式的单元格,excel,apache-poi,evaluation,Excel,Apache Poi,Evaluation,我有一个excel文件,其中一些单元格中有公式,一些输入字段中的值是根据公式单元格中的值计算的 使用apache poi setCellValue在各个单元格中设置值后,将在excel中设置这些值。这部分工作正常。然后我在跑步 FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator(); evaluator.evaluate(cell); 其中,单元格是我有公式的地方,也有一些预先计算的值

我有一个excel文件,其中一些单元格中有公式,一些输入字段中的值是根据公式单元格中的值计算的

使用apache poi setCellValue在各个单元格中设置值后,将在excel中设置这些值。这部分工作正常。然后我在跑步

FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
evaluator.evaluate(cell);
其中,单元格是我有公式的地方,也有一些预先计算的值


我的问题是,当我使用cell.getNumericCellValue获取单元格值时,在运行FormulaEvaluator之后,它将从单元格中设置的新值中获取预先计算的或旧的单元格值,而不是新的计算值。

我想您期望的是另一种行为,而不是该方法提供的行为:

使用FormulaEvaluator.evaluateCell单元格

这将计算给定单元格,并返回新值,而不影响单元格

您可能需要检查evaluateFormulaCell或evaluateInCell是否更适合您的需求


另请参见

中的文档如果我使用evaluateFormulaCell或evaluateInCell,则我会收到一个错误,java.lang.IllegalStateException:无法从错误单元格中获取数值。如链接中文档页面末尾所述,调试调用时会得到什么输出?您最初的评估结果是什么?评估者应包含相应的结果。如果这已经产生了一个错误,那么问题可能是POI无法以其当前形式计算公式。感谢Markus,我犯了同样的小错误,通过调用适当的getStringCellValue解决了它,显然它正在生成字符串,这就是它发出此警告的原因!!