Apache POI - 计算支持过滤器的列中具有特定值的行数

时间:2013-06-19 07:47:16

标签: excel filter count apache-poi rows

我正在尝试编写一个excel公式,以使用POI获取列中具有特定值的行数。应用过滤器时,计数应自动更新。 例如:如果列的值为“Y”或“N”,我需要获取特定列中具有“Y”的行数。当我们在Excel中的任何列上应用过滤器时,此计数应自动更新。

我尝试过使用,

cell1.setCellFormula("COUNTIF(S11:S6768,\"N\")");

但COUNTIF不会在过滤器上自动更新。

我也试过了,

cell1.setCellFormula("SUMPRODUCT(--(S11:S6768=\"N\"),SUBTOTAL(3,OFFSET(S11,ROW(S11:S6768)-ROW(S11),0)))+(NOW()*0)");

但这显示了#VALUE!在结果单元格而不是公式的结果。一旦我点击编辑公式并按回车键,它就会显示正确的结果。然后在我们过滤任何列时开始更新。

我试过了workbook.setForceFormulaRecalculation(true),但没有用。我收到一个RuntimeException,说SUMPRODUCT中的内容不合适。

我使用的POI版本是3.9

有没有人知道我可以用于我的要求的任何其他功能,或者我如何在这个阶段继续?

1 个答案:

答案 0 :(得分:0)

我修好了。我必须使用所需的公式创建模板,并将数据附加到模板以使其工作。公式在打开Excel和过滤器时评估得很好。