aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYegor Kozlov <yegor@apache.org>2009-08-05 17:02:04 +0000
committerYegor Kozlov <yegor@apache.org>2009-08-05 17:02:04 +0000
commitdf16f03172c33968ef96d2d6f484ace61460719a (patch)
tree1ca86562b58c5cf7c48af48ad782c4cd3f5051da
parent562fe9897cc6c3def95c1251e5de6cf9e9f10272 (diff)
downloadpoi-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.xml1
-rw-r--r--src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java17
-rwxr-xr-xsrc/testcases/org/apache/poi/ss/usermodel/BaseTestRow.java15
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());
+ }
+
}
/**