我定义了一个celldata字段,在写入execl中的时候公式写入成功了,但是该单元格没有发生计算,输出正确的结果。 在填充的时候也出现了这个问题,
CellData c=new CellData();
c.setFormula(true);
c.setFormulaValue("=5*3");
dto.setTest(c);
我定义了一个celldata字段,在写入execl中的时候公式写入成功了,但是该单元格没有发生计算,输出正确的结果。 在填充的时候也出现了这个问题,
CellData c=new CellData();
c.setFormula(true);
c.setFormulaValue("=5*3");
dto.setTest(c);
你好,请问你解决了吗,我也遇到同样的问题
@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()
@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();
参照楼上即可。