Author: fanningpj
Date: Sun Mar 20 21:41:31 2022
New Revision: 1899091

URL: http://svn.apache.org/viewvc?rev=1899091&view=rev
Log:
[bug-64536] add getDimension on XSSFSheet

Added:
    poi/trunk/test-data/spreadsheet/1_NoIden.xlsx   (with props)
Modified:
    
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
    
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFSheet.java

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java?rev=1899091&r1=1899090&r2=1899091&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java 
(original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java 
Sun Mar 20 21:41:31 2022
@@ -3962,6 +3962,20 @@ public class XSSFSheet extends POIXMLDoc
         safeGetProtectionField().setSelectUnlockedCells(enabled);
     }
 
+    /**
+     * Reads the dimensions of the sheet data
+     * @return dimensions of the sheet data as a Cell Range (can be null)
+     * @since POI 5.2.3
+     */
+    public CellRangeAddress getDimension() {
+        CTSheetDimension ctSheetDimension = worksheet.getDimension();
+        String ref = ctSheetDimension == null ? null : 
ctSheetDimension.getRef();
+        if (ref != null) {
+            return CellRangeAddress.valueOf(ref);
+        }
+        return null;
+    }
+
     private CTSheetProtection safeGetProtectionField() {
         if (!isSheetProtectionEnabled()) {
             return worksheet.addNewSheetProtection();

Modified: 
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFSheet.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFSheet.java?rev=1899091&r1=1899090&r2=1899091&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFSheet.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFSheet.java
 Sun Mar 20 21:41:31 2022
@@ -2253,4 +2253,28 @@ public final class TestXSSFSheet extends
             assertTrue(row2.getZeroHeight());
         }
     }
+
+    @Test
+    void testBug64536() throws IOException {
+        try (
+                XSSFWorkbook xssfWorkbook = (XSSFWorkbook) 
_testDataProvider.openSampleWorkbook("1_NoIden.xlsx");
+                UnsynchronizedByteArrayOutputStream bos = new 
UnsynchronizedByteArrayOutputStream()
+        ) {
+            XSSFSheet fileSheet = xssfWorkbook.getSheetAt(0);
+            assertEquals(CellRangeAddress.valueOf("B1:D9"), 
fileSheet.getDimension());
+
+            // Create Row and Cell, Then Set a Value
+            // 5, 2, 4 is just random number for test
+            Row fileRow = fileSheet.createRow(5);
+            Cell fileCell = fileRow.createCell(2, CellType.STRING);
+            fileCell.setCellValue("TEST VALUE");
+
+            xssfWorkbook.write(bos);
+
+            try (XSSFWorkbook xssfWorkbook2 = new 
XSSFWorkbook(bos.toInputStream())) {
+                XSSFSheet xssfSheet = xssfWorkbook2.getSheetAt(0);
+                assertEquals(CellRangeAddress.valueOf("B1:F9"), 
xssfSheet.getDimension());
+            }
+        }
+    }
 }

Added: poi/trunk/test-data/spreadsheet/1_NoIden.xlsx
URL: 
http://svn.apache.org/viewvc/poi/trunk/test-data/spreadsheet/1_NoIden.xlsx?rev=1899091&view=auto
==============================================================================
Binary file - no diff available.

Propchange: poi/trunk/test-data/spreadsheet/1_NoIden.xlsx
------------------------------------------------------------------------------
--- svn:mime-type (added)
+++ svn:mime-type Sun Mar 20 21:41:31 2022
@@ -0,0 +1 @@
+application/vnd.openxmlformats-officedocument.spreadsheetml.sheet



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

Reply via email to