Apache POI公式评估不适用于Excel IF

时间:2013-08-13 22:21:19

标签: apache-poi

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

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

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

当我尝试检查开关时(cell.getCachedFormulaResultType()) 单元格类型返回CELL_TYPE_STRING。但是richstringvalue为null。

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

   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)

2 个答案:

答案 0 :(得分:2)

我遇到了类似的问题。

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

工作代码:

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

workbook.write(fileOutputStream);

有问题的代码:

workbook.write(fileOutputStream);

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

答案 1 :(得分:0)

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