我有XSSFWorkbook,并且已将数组公式放在两列中,我想从这些列中复制值并粘贴到其他列上。
公式如下:
{=IFERROR(INDEX(Sheet2!$A$2:$C$13,MATCH(1,(Sheet2!$A$2:$A$13=$A2)*(Sheet2!$C$2:$C$13=$D2),0),2),"FAIL")}
我已经放置了公式(通过在多个单元格上运行循环),就像这样(工作表是XSSFSheet):
String formula = "AboveFormulaWithIterativeCell" // (without {} and =)
String range = "XFC" + i; // i is iterative row number
sheet.setArrayFormula(formula, CellRangeAddress.valueOf(range));
然后评估这样的公式(wb是XSSFWorkbook):
XSSFFormulaEvaluator.evaluateAllFormulaCells(wb);
到目前为止,一切正常。公式显示有效结果。
现在,如果我在这些单元格上运行循环并读取这样的值(c是Cell):
String cellValue = c.getStringCellValue();
它总是返回" FAIL",就像它在将公式评估为非数组公式后返回结果一样。
所以我用这个公式做了同样的事情:
{=IF(TRUE,TRUE,FALSE)}
令人惊讶的是它让我恢复正常。
所以,我的问题是这个公式是如何返回正确的结果而不是我的主要公式。
答案 0 :(得分:0)
所以Apache Poi仍然不支持操作表公式(数组公式)。
尚不支持操作表公式(在Excel中,公式 看起来像“{= ...}”而不是“= ...”)
有关详细信息,请参阅here。
所以我必须将我的数组公式转换为非数组公式。
注意:强>
如果您只想显示结果,仍然可以使用数组公式
但是你不能从包含数组公式的单元格中获取值。