在SXSSFWorkbook中评估公式时单元格类型出现问题

时间:2019-01-22 14:18:59

标签: java excel apache-poi

我遇到了下一个问题: 每当我尝试评估SXSSFWorkbook内的SXSSFCell的公式时,如果将CellType设置为“ String”,它都会正确地计算出它的值,然后结束,从而擦除先前存储在其中的公式。

我尝试了经典方式:

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

特定单元格:

FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
evaluator.evaluateFormulaCell(cell);

甚至是这样:

FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
CellValue cv = evaluator.evaluate(cell);
cell.setCellValue(new XSSFRichTextString(cv.getStringValue()));

但是每次,我的单元格对象的CellType都设置为String。

另一方面,在XSSFCell中使用XSSFWorkbook时我没有问题。运行上面的示例之一完美运行。计算公式后,CellType仍为“公式” 而且,当我阅读源代码时,SXSSFFormulaEvaluatorXSSFFormulaEvaluator都扩展了BaseFormulaEvaluator,该函数evaluateFormulaCell表示“单元格仍然是公式单元格”(事实并非如此)对于任何SXSSFCell

经过一番挖掘,我发现setCellValue类和SXSSFCell类之间的方法XSSFCell是不同的,这就是原因。

在我看来,这是一个从未解决的错误,但是如果有人对如何解决该问题有任何想法,那就太好了。

0 个答案:

没有答案