[alibaba/easyexcel]excel公式写入后未进行计算的问题

2024-05-21 984 views
9

我定义了一个celldata字段,在写入execl中的时候公式写入成功了,但是该单元格没有发生计算,输出正确的结果。 在填充的时候也出现了这个问题,

  CellData c=new CellData();
  c.setFormula(true);
  c.setFormulaValue("=5*3");
  dto.setTest(c);

image

回答

7

你好,请问你解决了吗,我也遇到同样的问题

1

@zhuangjiaju @fujhmcuxx @KennCai 追踪了一下源码,原因是由于easyexcel调用的poi的setCellFormula方法只设置cell公式字符串,并不进行计算。参考:https://poi.apache.org/apidocs/3.17/org/apache/poi/ss/usermodel/Cell.html#setCellFormula(java.lang.String) 在Fill以后,整体做一次计算: excelWriter.writeContext().writeWorkbookHolder().getWorkbook().getCreationHelper().createFormulaEvaluator().evaluateAll()

测试了一下,就是这个原因。 但是在fill以后,需要进行两步操作,才能进行公式的重新计算。

excelWriter.writeContext().writeWorkbookHolder().getWorkbook().setForceFormulaRecalculation(true);
excelWriter.writeContext().writeWorkbookHolder().getWorkbook().getCreationHelper().createFormulaEvaluator().evaluateAll();
3

参照楼上即可。