【发布时间】: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