You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache POI 5.2.2中SUMPRODUCT(ABS(A1:A5))公式求值异常咨询

Apache POI 5.2.2中SUMPRODUCT嵌套ABS公式求值异常

在Apache POI 5.2.2版本中,使用SUMPRODUCT(ABS(A1:A5))公式进行求值时无法返回正确结果,但单独使用SUMPRODUCT()(不含ABS嵌套)时功能正常。请问这是已知缺陷吗?

以下是测试程序:

private static final String FILE_NAME = "C:\\Ruff\\Math Functionality (1).xlsx";
public static void main(String[] args) throws Exception
{
    try 
    {
         Locale locale = Locale.getDefault();
         DataFormatter dataFormat = new DataFormatter(locale);
         FileInputStream excelFile = new FileInputStream(new File(FILE_NAME));
         Workbook workbook = new XSSFWorkbook(excelFile);

        // 获取包含问题公式的单元格(工作表0的B3,原注释标注A3存在偏差)
        Cell c = workbook.getSheetAt(0).getRow(2).getCell(1);

        FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
        evaluator.evaluateAll();
        //evaluator.evaluateFormulaCell(c);
        CellValue cVal = evaluator.evaluate(c); 
        switch (cVal.getCellType())
        {
            case NUMERIC:
            System.out.println("Cell value:" + dataFormat.formatCellValue(c,evaluator));
        }
    } 
    catch(Exception e) 
    {
        System.out.println(e.getMessage());
    }
}

这是Apache POI的已知问题,5.2.2版本的公式求值器在处理数组公式嵌套函数时存在逻辑缺陷,SUMPRODUCT与ABS嵌套时,无法正确解析数组运算逻辑,最终导致计算结果错误。

后续发布的5.2.3及以上版本已针对这类嵌套数组公式的求值逻辑完成修复,建议升级到最新稳定版本解决该问题。

若暂时无法升级,可手动实现计算逻辑作为临时替代:读取A1:A5的单元格值,逐个取绝对值后求和,再将结果赋值给目标单元格,绕过POI公式求值器的问题逻辑。

内容的提问来源于stack exchange,提问作者satyakumar putcha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 05:50:33