diff options
author | Yegor Kozlov <yegor@apache.org> | 2009-08-05 17:02:04 +0000 |
---|---|---|
committer | Yegor Kozlov <yegor@apache.org> | 2009-08-05 17:02:04 +0000 |
commit | df16f03172c33968ef96d2d6f484ace61460719a (patch) | |
tree | 1ca86562b58c5cf7c48af48ad782c4cd3f5051da | |
parent | 562fe9897cc6c3def95c1251e5de6cf9e9f10272 (diff) | |
download | poi-df16f03172c33968ef96d2d6f484ace61460719a.tar.gz poi-df16f03172c33968ef96d2d6f484ace61460719a.zip |
Fixed XSSFCell to correctly parse column indexes greater than 702 (ZZ), see Bugzilla #47606
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@801305 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r-- | src/documentation/content/xdocs/status.xml | 1 | ||||
-rw-r--r-- | src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java | 17 | ||||
-rwxr-xr-x | src/testcases/org/apache/poi/ss/usermodel/BaseTestRow.java | 15 |
3 files changed, 15 insertions, 18 deletions
diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index af9bb5a6b3..af0d90c143 100644 --- a/src/documentation/content/xdocs/status.xml +++ b/src/documentation/content/xdocs/status.xml @@ -33,6 +33,7 @@ <changes> <release version="3.5-beta7" date="2009-??-??"> + <action dev="POI-DEVELOPERS" type="fix">47606 - Fixed XSSFCell to correctly parse column indexes greater than 702 (ZZ)</action> <action dev="POI-DEVELOPERS" type="fix">47598 - Improved formula evaluator number comparison</action> <action dev="POI-DEVELOPERS" type="fix">47571 - Fixed XWPFWordExtractor to extract inserted/deleted text</action> <action dev="POI-DEVELOPERS" type="fix">47548 - Fixed RecordFactoryInputStream to properly read continued DrawingRecords</action> diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java index e817553a4c..f6615b73e8 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java @@ -97,7 +97,7 @@ public final class XSSFCell implements Cell { this.cell = cell; this.row = row; if (cell.getR() != null) { - this.cellNum = parseCellNum(cell.getR()); + this.cellNum = new CellReference(cell.getR()).getCol(); } this.sharedStringSource = row.getSheet().getWorkbook().getSharedStringSource(); this.stylesSource = row.getSheet().getWorkbook().getStylesSource(); @@ -648,21 +648,6 @@ public final class XSSFCell implements Cell { } /** - * Converts A1 style reference into 0-based column index - * - * @param r an A1 style reference to the location of this cell - * @return 0-based column index - */ - protected static short parseCellNum(String r) { - r = r.split("\\d+")[0]; - if (r.length() == 1) { - return (short) (r.charAt(0) - 'A'); - } else { - return (short) (r.charAt(1) - 'A' + 26 * (r.charAt(0) - '@')); - } - } - - /** * Set the cells type (numeric, formula or string) * * @throws IllegalArgumentException if the specified cell type is invalid diff --git a/src/testcases/org/apache/poi/ss/usermodel/BaseTestRow.java b/src/testcases/org/apache/poi/ss/usermodel/BaseTestRow.java index 3c162d7762..8124ede7bf 100755 --- a/src/testcases/org/apache/poi/ss/usermodel/BaseTestRow.java +++ b/src/testcases/org/apache/poi/ss/usermodel/BaseTestRow.java @@ -160,8 +160,6 @@ public abstract class BaseTestRow extends TestCase { assertTrue(e.getMessage().startsWith("Invalid column index (-1)")); } - row.createCell(maxCellNum); - //Test high cell bound try { Cell cell = row.createCell(maxCellNum + 1); @@ -170,6 +168,19 @@ public abstract class BaseTestRow extends TestCase { // expected during successful test assertTrue(e.getMessage().startsWith("Invalid column index ("+(maxCellNum+1)+")")); } + for(int i=0; i < maxCellNum; i++){ + Cell cell = row.createCell(i); + } + assertEquals(maxCellNum, row.getPhysicalNumberOfCells()); + workbook = getTestDataProvider().writeOutAndReadBack(workbook); + sheet = workbook.getSheetAt(0); + row = sheet.getRow(0); + assertEquals(maxCellNum, row.getPhysicalNumberOfCells()); + for(int i=0; i < maxCellNum; i++){ + Cell cell = row.getCell(i); + assertEquals(i, cell.getColumnIndex()); + } + } /** |