You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ce...@apache.org on 2026/08/16 07:05:48 UTC

(poi) 03/04: Bug 70008: Fix inconsistent behavior when parsing whole column reference strings

This is an automated email from the ASF dual-hosted git repository.

centic9 pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/poi.git

commit 53015bc9ae5e6f41739c9288b91cb5ffb7dd4abd
Author: Dominik Stadler <ce...@apache.org>
AuthorDate: Fri Aug 7 08:17:06 2026 +0200

    Bug 70008: Fix inconsistent behavior when parsing whole column reference strings
---
 .../java/org/apache/poi/ss/util/AreaReference.java |  2 +-
 .../org/apache/poi/ss/util/TestAreaReference.java  | 38 +++++++++++++++-------
 2 files changed, 27 insertions(+), 13 deletions(-)

diff --git a/poi/src/main/java/org/apache/poi/ss/util/AreaReference.java b/poi/src/main/java/org/apache/poi/ss/util/AreaReference.java
index fd1cb4ff51..0c30199da6 100644
--- a/poi/src/main/java/org/apache/poi/ss/util/AreaReference.java
+++ b/poi/src/main/java/org/apache/poi/ss/util/AreaReference.java
@@ -83,7 +83,7 @@ public class AreaReference {
             int col1 = CellReference.convertColStringToIndex(part1);
 
             _firstCell = new CellReference(0, col0, true, firstIsAbs);
-            _lastCell = new CellReference(0xFFFF, col1, true, lastIsAbs);
+            _lastCell = new CellReference(_version.getLastRowIndex(), col1, true, lastIsAbs);
             _isSingleCell = false;
             // TODO - whole row refs
         } else {
diff --git a/poi/src/test/java/org/apache/poi/ss/util/TestAreaReference.java b/poi/src/test/java/org/apache/poi/ss/util/TestAreaReference.java
index 9f944e3918..8e649d42ed 100644
--- a/poi/src/test/java/org/apache/poi/ss/util/TestAreaReference.java
+++ b/poi/src/test/java/org/apache/poi/ss/util/TestAreaReference.java
@@ -20,6 +20,8 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
+import java.io.IOException;
+
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.ss.SpreadsheetVersion;
 import org.apache.poi.ss.usermodel.Sheet;
@@ -69,18 +71,30 @@ class TestAreaReference {
     }
 
     @Test
-    void test62810() {
-        final Workbook wb = new HSSFWorkbook();
-        final Sheet sheet = wb.createSheet("Ctor test");
-        final String sheetName = sheet.getSheetName();
-        final CellReference topLeft = new CellReference(sheetName, 1, 1, true, true);
-        final CellReference bottomRight = new CellReference(sheetName, 5, 10, true, true);
-        final AreaReference goodAreaRef = new AreaReference(topLeft, bottomRight, SpreadsheetVersion.EXCEL2007);
-        final AreaReference badAreaRef = new AreaReference(bottomRight, topLeft, SpreadsheetVersion.EXCEL2007);
+    void test62810() throws IOException {
+        try (final Workbook wb = new HSSFWorkbook()) {
+            final Sheet sheet = wb.createSheet("Ctor test");
+            final String sheetName = sheet.getSheetName();
+            final CellReference topLeft = new CellReference(sheetName, 1, 1, true, true);
+            final CellReference bottomRight = new CellReference(sheetName, 5, 10, true, true);
+            final AreaReference goodAreaRef = new AreaReference(topLeft, bottomRight, SpreadsheetVersion.EXCEL2007);
+            final AreaReference badAreaRef = new AreaReference(bottomRight, topLeft, SpreadsheetVersion.EXCEL2007);
+
+            assertEquals("'Ctor test'!$B$2", topLeft.formatAsString());
+            assertEquals("'Ctor test'!$K$6", bottomRight.formatAsString());
+            assertEquals("'Ctor test'!$B$2:$K$6", goodAreaRef.formatAsString());
+            assertEquals("'Ctor test'!$B$2:$K$6", badAreaRef.formatAsString());
+        }
+    }
 
-        assertEquals("'Ctor test'!$B$2", topLeft.formatAsString());
-        assertEquals("'Ctor test'!$K$6", bottomRight.formatAsString());
-        assertEquals("'Ctor test'!$B$2:$K$6", goodAreaRef.formatAsString());
-        assertEquals("'Ctor test'!$B$2:$K$6", badAreaRef.formatAsString());
+    @Test
+    void test70008() {
+        AreaReference oldStyle = new AreaReference("A:B", SpreadsheetVersion.EXCEL97);
+        assertEquals(SpreadsheetVersion.EXCEL97.getLastRowIndex(), oldStyle.getLastCell().getRow());
+        assertTrue(oldStyle.isWholeColumnReference());
+
+        AreaReference newStyle = new AreaReference("A:B", SpreadsheetVersion.EXCEL2007);
+        assertEquals(SpreadsheetVersion.EXCEL2007.getLastRowIndex(), newStyle.getLastCell().getRow());
+        assertTrue(newStyle.isWholeColumnReference());
     }
 }


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