使用Apache POI处理excel公式不更新的解决办法

Posted 挣脱生命的束缚...

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Apache POI处理excel公式不更新的解决办法相关的知识,希望对你有一定的参考价值。

使用poi更新excel时,如果单元格A设置了公式,当其依赖的其他单元格填充了值之后,导出的excel中A仍为公式而不是自动计算的值,如图:


技术分享图片
Paste_Image.png

分值小计没有更新成计算结果。

解决方法

poi中提供了org.apache.poi.ss.usermodel.FormulaEvaluator这个接口,实现对公式的更新。其中HSSFFormulaEvaluator, XSSFFormulaEvaluator 实现了这个接口。

实现思路

我们可以遍历一行单元格中的所有格,判断如果其类型为Cell.CELL_TYPE_FORMULA,则证明此单元格为公式,可以使用evaluator.evaluateFormulaCell(cell);将其更新。示例代码如下:

private static void updateFormula(Workbook wb,Sheet s,int row){
        Row r=s.getRow(row);
        Cell c=null;
        FormulaEcaluator eval=null;
        if(wb instanceof HSSFWorkbook)
            eval=new HSSFFormulaEvaluator((HSSFWorkbook) wb);
        else if(wb instanceof XSSFWorkbook)
            eval=new XSSFFormulaEvaluator((XSSFWorkbook) wb);
        for(int i=r.getFirstCellNum();i<r.getLastCellNum();i++){
            c=r.getCell(i);
            if(c.getCellType()==Cell.CELL_TYPE_FORMULA)
                eval.evaluateFormulaCell(c);
        }
}

如果你觉得这篇文章对你有帮我,请我吃块糖吧~ ??



作者:Devid
链接:https://www.jianshu.com/p/5d5265cafa06
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。







以上是关于使用Apache POI处理excel公式不更新的解决办法的主要内容,如果未能解决你的问题,请参考以下文章

Apache POI处理excel文档

Apache POI处理excel文档

使用 Apache POI 从 Java 中的 Excel 中读取公式字段

使用 Apache POI XSSF 工作簿向 Excel 单元格添加公式

java poi读取excel公式,返回计算值(转)

如何使用apache poi从公式单元格中读取单元格值