Author: fanningpj
Date: Fri Feb  4 20:29:55 2022
New Revision: 1897780

URL: http://svn.apache.org/viewvc?rev=1897780&view=rev
Log:
introduce CellReferenceType

Modified:
    
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java
    
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
    
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java
    poi/trunk/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java
    poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/Workbook.java
    
poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java?rev=1897780&r1=1897779&r2=1897780&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java
 Fri Feb  4 20:29:55 2022
@@ -1362,7 +1362,7 @@ public class SXSSFWorkbook implements Wo
     }
 
     @Override
-    public void setUseR1C1CellReferences(boolean useR1C1CellReferences) {
-        getXSSFWorkbook().setUseR1C1CellReferences(useR1C1CellReferences);
+    public void setCellReferenceType(CellReferenceType cellReferenceType) {
+        getXSSFWorkbook().setCellReferenceType(cellReferenceType);
     }
 }

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java?rev=1897780&r1=1897779&r2=1897780&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
 Fri Feb  4 20:29:55 2022
@@ -1565,11 +1565,17 @@ public class XSSFWorkbook extends POIXML
     }
 
     @Override
-    public void setUseR1C1CellReferences(boolean useR1C1CellReferences) {
+    public void setCellReferenceType(CellReferenceType cellReferenceType) {
         CTCalcPr calcPr = getCTWorkbook().getCalcPr();
-        if (calcPr == null) calcPr = getCTWorkbook().addNewCalcPr();
-        STRefMode.Enum refMode = useR1C1CellReferences ? R_1_C_1 : A_1;
-        calcPr.setRefMode(refMode);
+        if (cellReferenceType == CellReferenceType.UNKNOWN) {
+            if (calcPr != null) {
+                calcPr.unsetRefMode();
+            }
+        } else {
+            if (calcPr == null) calcPr = getCTWorkbook().addNewCalcPr();
+            STRefMode.Enum refMode = cellReferenceType == 
CellReferenceType.R1C1 ? R_1_C_1 : A_1;
+            calcPr.setRefMode(refMode);
+        }
     }
 
     private static String getReferencePrintArea(String sheetName, int startC, 
int endC, int startR, int endR) {

Modified: 
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java?rev=1897780&r1=1897779&r2=1897780&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java
 Fri Feb  4 20:29:55 2022
@@ -1373,7 +1373,7 @@ public final class TestXSSFWorkbook exte
                 XSSFWorkbook wb = openSampleWorkbook("WithTable.xlsx")
         ) {
             assertEquals(CellReferenceType.A1, wb.getCellReferenceType());
-            wb.setUseR1C1CellReferences(true);
+            wb.setCellReferenceType(CellReferenceType.R1C1);
             assertEquals(CellReferenceType.R1C1, wb.getCellReferenceType());
             wb.write(bos);
             try (XSSFWorkbook wb2 = new XSSFWorkbook(bos.toInputStream())) {
@@ -1389,7 +1389,7 @@ public final class TestXSSFWorkbook exte
                 XSSFWorkbook wb = new XSSFWorkbook()
         ) {
             assertEquals(CellReferenceType.UNKNOWN, wb.getCellReferenceType());
-            wb.setUseR1C1CellReferences(true);
+            wb.setCellReferenceType(CellReferenceType.R1C1);
             assertEquals(CellReferenceType.R1C1, wb.getCellReferenceType());
             wb.write(bos);
             try (XSSFWorkbook wb2 = new XSSFWorkbook(bos.toInputStream())) {

Modified: 
poi/trunk/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java?rev=1897780&r1=1897779&r2=1897780&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java 
(original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java 
Fri Feb  4 20:29:55 2022
@@ -1757,7 +1757,10 @@ public final class HSSFWorkbook extends
 
             RefModeRecord refModeRecord = null;
             for (RecordBase record : records) {
-                if (record instanceof RefModeRecord) refModeRecord = 
(RefModeRecord)record;
+                if (record instanceof RefModeRecord) {
+                    refModeRecord = (RefModeRecord)record;
+                    break;
+                }
             }
             if (refModeRecord == null) {
                 continue;
@@ -1771,17 +1774,17 @@ public final class HSSFWorkbook extends
     }
 
     /**
-     * Configure workbook to use R1C1 cell references (as opposed to A1 cell 
references).
+     * Configure workbook to a specific cell reference type, e.g. R1C1 cell 
references (as opposed to A1 cell references).
      * <p>
      *     Note that HSSF format stores this information at sheet level - so 
if the workbook has no sheets,
      *     this call will have no effect. It is recommended that you call this 
(possibly again) just before
      *     writing HSSFWorkbook.
      * </p>
-     * @param useR1C1CellReferences set to true if you want to configure 
workbook to use R1C1 cell references (as opposed to A1 cell references).
+     * @param cellReferenceType the type of cell references used
      * @since POI 5.2.1
      */
     @Override
-    public void setUseR1C1CellReferences(boolean useR1C1CellReferences) {
+    public void setCellReferenceType(CellReferenceType cellReferenceType) {
         for (HSSFSheet hssfSheet : _sheets) {
 
             InternalSheet internalSheet = hssfSheet.getSheet();
@@ -1790,20 +1793,27 @@ public final class HSSFWorkbook extends
 
             RefModeRecord refModeRecord = null;
             for (RecordBase record : records) {
-                if (record instanceof RefModeRecord) refModeRecord = 
(RefModeRecord)record;
+                if (record instanceof RefModeRecord) {
+                    refModeRecord = (RefModeRecord)record;
+                    break;
+                }
             }
-            if (useR1C1CellReferences) {
+            if (cellReferenceType == CellReferenceType.R1C1) {
                 if (refModeRecord == null) {
                     refModeRecord = new RefModeRecord();
                     records.add(records.size() - 1, refModeRecord);
                 }
                 refModeRecord.setMode(RefModeRecord.USE_R1C1_MODE);
-            } else {
+            } else if (cellReferenceType == CellReferenceType.A1) {
                 if (refModeRecord == null) {
                     refModeRecord = new RefModeRecord();
                     records.add(records.size() - 1, refModeRecord);
                 }
                 refModeRecord.setMode(RefModeRecord.USE_A1_MODE);
+            } else {
+                if (refModeRecord != null) {
+                    records.remove(refModeRecord);
+                }
             }
         }
     }

Modified: poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/Workbook.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/Workbook.java?rev=1897780&r1=1897779&r2=1897780&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/Workbook.java 
(original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/Workbook.java Fri 
Feb  4 20:29:55 2022
@@ -639,8 +639,8 @@ public interface Workbook extends Closea
     CellReferenceType getCellReferenceType();
 
     /**
-     * @param useR1C1CellReferences set to true if you want to configure 
workbook to use R1C1 cell references (as opposed to A1 cell references).
+     * @param cellReferenceType the type of cell references used
      * @since POI 5.2.1
      */
-    void setUseR1C1CellReferences(boolean useR1C1CellReferences);
+    void setCellReferenceType(CellReferenceType cellReferenceType);
 }

Modified: 
poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java?rev=1897780&r1=1897779&r2=1897780&view=diff
==============================================================================
--- 
poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java 
(original)
+++ 
poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java 
Fri Feb  4 20:29:55 2022
@@ -1186,7 +1186,7 @@ public final class TestHSSFWorkbook exte
                 HSSFWorkbook wb = openSampleWorkbook("49423.xls")
         ) {
             assertEquals(CellReferenceType.A1, wb.getCellReferenceType());
-            wb.setUseR1C1CellReferences(true);
+            wb.setCellReferenceType(CellReferenceType.R1C1);
             assertEquals(CellReferenceType.R1C1, wb.getCellReferenceType());
             wb.write(bos);
             try (HSSFWorkbook wb2 = new HSSFWorkbook(bos.toInputStream())) {
@@ -1204,7 +1204,7 @@ public final class TestHSSFWorkbook exte
             assertEquals(CellReferenceType.UNKNOWN, wb.getCellReferenceType());
             HSSFSheet sheet = wb.createSheet();
             assertEquals(CellReferenceType.A1, wb.getCellReferenceType());
-            wb.setUseR1C1CellReferences(true);
+            wb.setCellReferenceType(CellReferenceType.R1C1);
             assertEquals(CellReferenceType.R1C1, wb.getCellReferenceType());
             wb.write(bos);
             try (HSSFWorkbook wb2 = new HSSFWorkbook(bos.toInputStream())) {



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to