在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 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()所做的是将相同的公式应用于一些单元格来优化文件大小。
然而好消息是,这些types的公式支持POI 4.0(目前仅限于matrixtypes的操作,所以你的例子在当前夜晚仍然不起作用)。 为什么这个好消息? 因为这些作品已经开始出现,可以在某些时候支持所有这些公式。 所以我认为它会发生(注意:我没有参与POI项目,我只是使用它,这个function对我来说很重要)。