【问题标题】:Apache POI - count numbers of rows with a particular value in a column thats supports filterApache POI - 计算支持过滤器的列中具有特定值的行数
【发布时间】:2013-06-15 15:47:18
【问题描述】:

我正在尝试编写一个 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

有没有人知道我可以使用任何其他功能来满足我的需求,或者在这个阶段我该如何进行?

【问题讨论】:

  • 您没有按照网站上的说明使用Formula Evaluator 更新缓存值是否有原因?
  • 当我使用公式评估器作为 HSSFFormulaEvaluator.evaluateAllFormulaCells(workbook);它抛出以下异常 java.lang.RuntimeException: Invalid arg type for SUMPRODUCT: (org.apache.poi.ss.formula.eval.ErrorEval)

标签: excel filter count apache-poi rows


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多