2013-06-19 20 views
0

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

我尝试使用,

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

没有人有,我可以用我的要求或我怎么能继续在这个阶段任何其他功能的任何想法?

+0

是否有原因导致您没有按照网站上的说明使用[Formula Evaluator](http://poi.apache.org/spreadsheet/eval.html)更新缓存的值? – Gagravarr

+0

当我使用公式评估作为HSSFFormulaEvaluator.evaluateAllFormulaCells(工作簿); 它引发以下异常, java.lang.RuntimeException:SUMPRODUCT的无效arg类型:(org.apache.poi.ss.formula.eval.ErrorEval) – Shakeel

回答

0

我修好了。我必须创建具有所需公式的模板并将数据附加到模板以使其工作。公式评估罚款打开Excel和过滤器。

相关问题