Java apachepoi中的数组公式

Java apachepoi中的数组公式,java,excel,apache-poi,Java,Excel,Apache Poi,我有一个excel工作表(xslx),其中定义了一个数组公式()。 这就像是excel自身的一种魅力。 我使用ApachePOI编程操作excel工作表中的一些值。在那次操作之后,我想重新计算数组公式的结果,但我不知道怎么做。 对于“正常”公式,我按照以下步骤进行: FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator(); XSSFRow row = sheet.getRow(i); C

我有一个excel工作表(xslx),其中定义了一个数组公式()。 这就像是excel自身的一种魅力。 我使用ApachePOI编程操作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)
public CellRange setArrayFormula(字符串公式,CellRangeAddress范围)
在类XSSFSheet中

在使用类似于cell.setFormula(“SUM(ABS(H2:H5))”的调用设置公式之后,新的CellRangeAddress(2,5,7,7)) 我不知道如何得到该公式的结果(但我也不确定这是否是在apache poi中使用数组公式的正确方法。在Excel中,我必须这样做
{=SUM(ABS(H2:H5))}


有人知道如何在ApachePOI中使用数组公式吗?谢谢大家!

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

您想要的POI有时称为“表公式”,不受支持()


然而,好消息是POI 4.0中提供了对这些类型公式的一些支持(尽管目前仅限于矩阵类型的运算,所以您的示例在当前的夜间仍然不起作用)。为什么这是个好消息?因为这些片段开始就位,这将允许所有这些公式在某个点上得到支持。因此,我认为它会发生(注意:我没有参与POI项目,我只是使用它,这个功能对我来说很重要)。

FYI Apache POI 3.17确实支持创建数组公式(那些在Excel中显示为
{=…}
setArrayFormula()
创建数组公式。