gpt4 book ai didi

java - Apache poi 中的数组公式

转载 作者:行者123 更新时间:2023-12-02 12:46:04 25 4
gpt4 key购买 nike

我有一个 Excel 工作表 (xslx),其中定义了一个数组公式 ( https://support.office.com/en-us/article/Guidelines-and-examples-of-array-formulas-7D94A64E-3FF3-4686-9372-ECFD5CAA57C7 )。这就像 Excel 本身的魅力一样。我使用 apache poi 以编程方式操作该 Excel 工作表中的某些值。在该操作之后,我想重新计算该数组公式的结果,但我不知道该怎么做。使用“正常”公式,我按如下方式执行:

FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
XSSFRow row = sheet.getRow(i);
Cell cell = row.getCell(j);
evaluator.evaluateCell(cell);
double value = cell.getNumericValue();

使用数组公式有方法

void setCellArrayFormula(String formula, CellRangeAddress range)

在 XSSFCell 类中和

public CellRange<XSSFCell> setArrayFormula(String formula, CellRangeAddress range)

在 XSSFSheet 类中。

使用 cell.setCellArrayFormula("SUM(ABS(H2:H5))", new CellRangeAddress(2,5,7,7)); 等调用设置公式后;我不知道如何获得该公式的结果(但我也不确定这是否是在 apache poi 中使用数组公式的正确方法。在 Excel 中我必须这样做 {=SUM (ABS(H2:H5))})

有人知道如何在apache poi中使用数组公式吗?谢谢!

最佳答案

当前版本的 Apache POI (3.17) 不支持这样的数组公式。 (我相信)Sheet.setArrayFormula() 的作用是将相同的公式应用于多个单元格以优化文件大小。

您想要的 POI 有时称为“表公式”,并且不受支持 ( https://poi.apache.org/spreadsheet/formula.html )。

不过,好消息是 POI 4.0 中将对这些类型的公式提供一些支持(不过目前仅限于矩阵类型运算,因此您的示例在当前的 nightly 中仍然不起作用)。为什么这是个好消息?因为这些部分已经开始到位,所有这些公式都将在某个时候得到支持。所以我认为它会发生(注意:我没有参与 POI 项目,我只是使用它,并且这个功能对我来说很重要)。

关于java - Apache poi 中的数组公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44775847/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com