在Apache poi中的数组公式

我有一个Excel表格(xslx),我已经定义了一个数组公式( https://support.office.com/zh-cn/article/Guidelines-and-examples-of-array-formulas-7D94A64E-3FF3-4686- 9372-ECFD5CAA57C7 )。 这就像在excel itselt中的魅力一样。 我使用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));调用设置公式后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 )。

然而好消息是,这些types的公式支持POI 4.0(目前仅限于matrixtypes的操作,所以你的例子在当前夜晚仍然不起作用)。 为什么这个好消息? 因为这些作品已经开始出现,可以在某些时候支持所有这些公式。 所以我认为它会发生(注意:我没有参与POI项目,我只是使用它,这个function对我来说很重要)。