]> source.dussan.org Git - poi.git/commitdiff
#59746 XSSF support for files from certain alternate tools where the row XML is missi...
authorNick Burch <nick@apache.org>
Thu, 23 Jun 2016 18:59:48 +0000 (18:59 +0000)
committerNick Burch <nick@apache.org>
Thu, 23 Jun 2016 18:59:48 +0000 (18:59 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1749971 13f79535-47bb-0310-9956-ffa450edef68

src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRow.java
src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java

index 4b73e36ca588a43b4a7f5096ac31a68b79f6a2f3..ee956b437da3ba0f82a094e0f5d6b1cf809cd430 100644 (file)
@@ -77,6 +77,16 @@ public class XSSFRow implements Row, Comparable<XSSFRow> {
             _cells.put(colI, cell);
             sheet.onReadCell(cell);
         }
+        
+        if (! row.isSetR()) {
+            // Certain file format writers skip the row number
+            // Assume no gaps, and give this the next row number
+            int nextRowNum = sheet.getLastRowNum()+2;
+            if (nextRowNum == 2 && sheet.getPhysicalNumberOfRows() == 0) {
+                nextRowNum = 1;
+            }
+            row.setR(nextRowNum);
+        }
     }
 
     /**
index 97ace44e471a3338d2a176cbf3ad8f8daeb6b85e..41adc133a810c72ce09296553d035dbd59e5ac16 100644 (file)
@@ -3088,7 +3088,6 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues {
      *  to include the row number on the row tags
      */
     @Test
-    @Ignore("Not yet supported")
     public void noRowNumbers59746() {
         Workbook wb = XSSFTestDataSamples.openSampleWorkbook("59746_NoRowNums.xlsx");
         Sheet sheet = wb.getSheetAt(0);
@@ -3096,5 +3095,8 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues {
         assertEquals("Checked", sheet.getRow(0).getCell(0).getStringCellValue());
         assertEquals("Checked", sheet.getRow(9).getCell(2).getStringCellValue());
         assertEquals(false, sheet.getRow(70).getCell(8).getBooleanCellValue());
+        assertEquals(71, sheet.getPhysicalNumberOfRows());
+        assertEquals(70, sheet.getLastRowNum());
+        assertEquals(70, sheet.getRow(sheet.getLastRowNum()).getRowNum());
     }
 }