首页 文章

Apache poi中的数组公式

提问于
浏览
0

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

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中 .

用_546929之类的调用设置公式之后我不知道如何获得该公式的结果(但我也不确定这是否是在apache poi中使用数组公式的正确方法 . 在Excel中我必须做它喜欢这个 {=SUM(ABS(H2:H5))}

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

1 回答

  • 1

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

    您想要什么POI有时称为"table formula"并且不受支持(https://poi.apache.org/spreadsheet/formula.html) .

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

相关问题