You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by gw...@apache.org on 2019/03/31 01:00:06 UTC

svn commit: r1856652 - in /poi/trunk/src/ooxml: java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java

Author: gwoolsey
Date: Sun Mar 31 01:00:05 2019
New Revision: 1856652

URL: http://svn.apache.org/viewvc?rev=1856652&view=rev
Log:
#61700 getForceFormulaRecalculation() returns wrong value

changed to use the proper OOXML attribute instead of a hack about calculation engine version ID.  Reporter was right, the behavior was wrong in some cases, but it turns out the fix was a bit more.  See issue for details.

Modified:
    poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
    poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java?rev=1856652&r1=1856651&r2=1856652&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java Sun Mar 31 01:00:05 2019
@@ -2221,9 +2221,9 @@ public class XSSFWorkbook extends POIXML
     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);
@@ -2239,7 +2239,7 @@ public class XSSFWorkbook extends POIXML
     public boolean getForceFormulaRecalculation(){
         CTWorkbook ctWorkbook = getCTWorkbook();
         CTCalcPr calcPr = ctWorkbook.getCalcPr();
-        return calcPr != null && calcPr.getCalcId() != 1;
+        return calcPr != null && calcPr.isSetFullCalcOnLoad() && calcPr.getFullCalcOnLoad();
     }
 
 

Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java?rev=1856652&r1=1856651&r2=1856652&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java Sun Mar 31 01:00:05 2019
@@ -489,7 +489,7 @@ public final class TestXSSFWorkbook exte
             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);
@@ -498,8 +498,7 @@ public final class TestXSSFWorkbook exte
             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
@@ -1145,8 +1144,7 @@ public final class TestXSSFWorkbook exte
     }
     
     /**
-     * See bug #61700 test data tables
-     *
+     * See bug #61700
      * @throws Exception
      */
     @Test
@@ -1154,14 +1152,14 @@ public final class TestXSSFWorkbook exte
         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();
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org