public void setForceFormulaRecalculation(boolean value){
CTWorkbook ctWorkbook = getCTWorkbook();
CTCalcPr calcPr = ctWorkbook.isSetCalcPr() ? ctWorkbook.getCalcPr() : ctWorkbook.addNewCalcPr();
- // when set to 0, will tell Excel that it needs to recalculate all formulas
+ // when set to true, will tell Excel that it needs to recalculate all formulas
// in the workbook the next time the file is opened.
- calcPr.setCalcId(0);
+ calcPr.setFullCalcOnLoad(value);
if(value && calcPr.getCalcMode() == STCalcMode.MANUAL) {
calcPr.setCalcMode(STCalcMode.AUTO);
public boolean getForceFormulaRecalculation(){
CTWorkbook ctWorkbook = getCTWorkbook();
CTCalcPr calcPr = ctWorkbook.getCalcPr();
- return calcPr != null && calcPr.getCalcId() != 1;
+ return calcPr != null && calcPr.isSetFullCalcOnLoad() && calcPr.getFullCalcOnLoad();
}
CTWorkbook ctWorkbook = wb.getCTWorkbook();
assertFalse(ctWorkbook.isSetCalcPr());
- wb.setForceFormulaRecalculation(true); // resets the EngineId flag to zero
+ wb.setForceFormulaRecalculation(true);
CTCalcPr calcPr = ctWorkbook.getCalcPr();
assertNotNull(calcPr);
calcPr.setCalcId(100);
assertTrue(wb.getForceFormulaRecalculation());
- wb.setForceFormulaRecalculation(true); // resets the EngineId flag to zero
- assertEquals(0, (int) calcPr.getCalcId());
+ wb.setForceFormulaRecalculation(false);
assertTrue(wb.getForceFormulaRecalculation());
// calcMode="manual" is unset when forceFormulaRecalculation=true
}
/**
- * See bug #61700 test data tables
- *
+ * See bug #61700
* @throws Exception
*/
@Test
Workbook workbook = _testDataProvider.createWorkbook();
workbook.createSheet().createRow(0).createCell(0).setCellFormula("B1+C1");
workbook.getCreationHelper().createFormulaEvaluator().evaluateAll();
-
+
assertFalse(workbook.getForceFormulaRecalculation());
workbook.setForceFormulaRecalculation(true);
assertTrue(workbook.getForceFormulaRecalculation());
-
+
Workbook wbBack = _testDataProvider.writeOutAndReadBack(workbook);
assertTrue(wbBack.getForceFormulaRecalculation());
-
+
workbook.close();
wbBack.close();
}