使用poi读取公式错误,xlsx和xls在poi3.8后都支持公式读取,读取后有计算错误公式,解决方法

本文介绍了在使用Apache POI处理含有公式的Excel文件时,如何解决计算结果与Excel显示不一致的问题。通过创建FormulaEvaluator实例并结合DataFormatter,能够正确获取公式计算后的值。博客提供了一段示例代码,演示了如何实现这一功能。对于Java开发者处理Excel公式计算,这是一个实用的解决方法。
摘要由CSDN通过智能技术生成

java使用POI遇到公式解决方法FormulaEvaluator

记录一下:
在3.8版本前使用xls计算公式正常逻辑,我们写一个判断:

     case FORMULA:
                    try {
                       Double numericCellValue = cell.getNumericCellValue();
                       BigDecimal bd2 = new BigDecimal(numericCellValue.toString());
                       bd2.toPlainString();
                       cellValue = String.valueOf(bd2.setScale(2, BigDecimal.ROUND_HALF_UP));
                   
                    } catch (IllegalStateException e) {
                        cellValue = "error";
                    }

在正常逻辑下,我们获取公式里面的值使用cell.getNumericCellValue();方法,可以使用BigDecimal来获取两位小数。但是在有些公式计算中我们发现计算的值是与execl里面计算不相同的,所以采用以下方式

       String cellValue = "";
       DataFormatter df = new DataFormatter();
       FormulaEvaluator formulaEval = srcBook.getCreationHelper().createFormulaEvaluator();                     cellValue = df.formatCellValue(cell, formulaEval);

具体逻辑如下:
//创建一个计算单元格的类
FormulaEvaluator formulaEval = srcBook.getCreationHelper().createFormulaEvaluator();
然后将他使用DataFormatter的方法来格式化

如果对你有用请点点关注,我继续和pm对线对了~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值