2013-07-29 2 views
9

Excel 시트에서 셀을 변경하기 위해 POI POI를 사용하고 있습니다. 값을 변경하면 변경된 셀에 해당하는 수식이있는 셀이 업데이트되지 않습니다.Excel 수식이 셀을 업데이트하지 않음

수식을 사용하여 셀을 클릭하고 함수 막대를 클릭하면 수식이 업데이트됩니다.

계산 옵션이 자동으로 업데이트되도록 설정했습니다.

빠른 예.

행 :

[A2 + A3] I 사용 변경할 때 [1] [2] 여기

A1 3

같을 것이다 POI :

[A2 + A3] [2] [5]

여전히 그 셀을 클릭 할 때까지 A1은 3입니다.

통합 문서 또는 시트 새로 고침도 작동하지 않습니다. 엑셀이나 POI에 문제가 있습니까? 누구든지 해결 방법을 생각할 수 있습니까?

+0

당신의 질문은 명확하지 않다. Excel에서 워크 시트를 열거 나 닫는 것을 포함하여 정확한 작업 순서를 설명하십시오. 다음 단계를 수행합니까? 1) 워크 시트를 만듭니다. 2) Excel을 닫습니다. 3) Java 프로그램을 실행하십시오. 4) Excel에서 워크 시트를 다시여시겠습니까? 그렇지 않다면, 당신이하는 일을 정확히 묘사하십시오. –

+2

다른 사람들은 그러한 설명없이 대답했으며 이러한 설명은이 상황에서 조금 관련이 없습니다. – PandaBearSoup

답변

20

, 모든 공식 세포를 다시 평가할 수있다 또는 정확하게 설정 한 방법과 달성하려는 구체적인 방법에 따라 솔루션을 찾을 수 있어야합니다. here

+0

예,이 문제를 발견했을 때 일시적인 해결책으로 사용되었습니다.Excel을 클릭하면 자동으로 셀을 업데이트하지 않는 이유가 궁금합니다. 통합 문서 새로 ​​고침도 작동해야합니다. 버그 같아. 기술적으로 뿌리 문제를 해결할 때이 대답을 받아 들일 것입니다. – PandaBearSoup

+1

@PandaBearSoup 왜 아파치 POI 문서의 [수식을 평가하는 이유 (http://poi.apache.org/spreadsheet/eval.html#WhyEvaluate)] 섹션에서 어떻게해야하는지 설명합니다. – Gagravarr

2

재 계산을 명시 적으로 트리거해야합니다. 수식 재 계산 섹션 here을 참조하십시오. 이유에 대해서는 &입니다.

HSSFFormulaEvaluator.evaluateAllFormulaCells(workbook) 

: 당신이 HSSF 통합 문서를 사용하는 경우

XSSFFormulaEvaluator.evaluateAllFormulaCells(workbook) 

유사한 API가 존재 : 당신이 XSSF 통합 문서를 사용하는 경우 다음과 같이

9

시트에 일부 A3=sum(A1:A2) 노니 수식으로 계산되고, 2

sh.getRow(0).getCell(0).setCellValue(2);

같이 // 설정 A1 = 2 과 A2의 값을 변경하고, 기록 동작을 수행 여전히 9 보이고 A3의 값을 확인한다면 이제 A1=5, A2 =4. 미세 작동 그것은 틀린 것처럼 보이지만 실제로는 그렇지 않습니다. 요점은 Excel에서 이전에 계산 된 결과를 캐시하고이를 업데이트하기 위해 재 계산을 트리거해야한다는 것입니다.

wb.getCreationHelper().createFormulaEvaluator().evaluateAll(); 또는

wb.setForceFormulaRecalculation(true); 다음 쓰기 동작을 수행와

. 이렇게하면 정확한 결과를 얻을 수 있습니다. 세부 사항을 위해 check here

+1

멋진 복사 붙여 넣기 작업. –

+0

위의 솔루션에 대한 의견을 게시할만한 충분한 평판이 없습니다. 그래서 솔루션을 붙여 넣었습니다. – nilamber

+0

많은 감사! wb.setForceFormulaRecalculation (true); 나에게 매력처럼 일했다! –

관련 문제