我遇到了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)
答案 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文件。