2013-06-19 2 views
0

POI를 사용하여 열의 특정 값을 갖는 행 수를 얻으려는 Excel 수식을 작성하려고합니다. 필터를 적용하면 개수가 자동으로 업데이트됩니다. 예 : 열의 값이 "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를 보여줍니다! 수식의 결과 대신 결과 셀에. 수식 편집을 클릭하고 Enter 키를 누르면 올바른 결과가 표시됩니다. 그런 다음 열을 필터링 할 때 업데이트가 시작됩니다.

나는 workbook.setForceFormulaRecalculation(true)을 시도했지만 도움이되지 않습니다. SUMPRODUCT에서 뭔가 잘못되었다는 RuntimeException이 발생합니다.

내가 사용 POI 버전 3.9

입니다

사람이 내 요구에 사용할 수있는 아니면이 단계에서 진행할 수있는 방법을 다른 기능에 대한 어떤 생각을 가지고 있습니까?

+0

웹 사이트의 지침을 따르지 않고 [수식 계산기] (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을 여는 동시에 필터에서도 잘 평가됩니다.

관련 문제