0

我遇到了 POI 和公式评估器的奇怪问题。我已经做了很多时间,但是由于某种原因,以下公式失败了,让我很头疼。

公式:=IF(B12=0, B9, 0)

在我的工作表中,B12 为零,而 B9 实际上是一个填充数字。

当我尝试检查 switch(cell.getCachedFormulaResultType()) 时,单元格类型返回为 CELL_TYPE_STRING。然而,richstringvalue 为空。

然后我尝试通过以下方式执行计算:

   FormulaEvaluator evaluator =         cell.getSheet().getWorkbook().getCreationHelper().createFormulaEvaluator();

但得到一个:XmlValueDisconnectedException。

根据支持的函数列表,IF 应该是微不足道的。

谁能提供任何其他建议,我很难过,例外是没有意义的:(

痕迹:

org.apache.xmlbeans.impl.values.XmlValueDisconnectedException
    at org.apache.xmlbeans.impl.values.XmlObjectBase.check_orphaned(XmlObjectBase.java:1244)
    at org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTDefinedNameImpl.getName(Unknown Source)
    at org.apache.poi.xssf.usermodel.XSSFName.getNameName(XSSFName.java:133)
    at org.apache.poi.xssf.usermodel.XSSFEvaluationWorkbook.getName(XSSFEvaluationWorkbook.java:84)
4

2 回答 2

2

我有一个类似的问题。

就我而言,我在调用 FormulaEvaluator 之前调用了 workbook.write()。交换序列后问题得到解决。

工作代码:

FormulaEvaluator formulaEvaluator = workbook.getCreationHelper().createFormulaEvaluator();
formulaEvaluator.evaluateAll();

workbook.write(fileOutputStream);

有问题的代码:

workbook.write(fileOutputStream);

FormulaEvaluator formulaEvaluator = workbook.getCreationHelper().createFormulaEvaluator();
formulaEvaluator.evaluateAll();
于 2014-10-16T01:52:46.600 回答
0

添加 poi 库文件夹中的 xmlbeans jar 文件。

于 2015-09-27T13:48:26.713 回答