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 2013/06/17 11:06:39 UTC

svn commit: r1493686 - in /poi/trunk: src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java test-data/spreadsheet/54607.xlsx

Author: centic
Date: Mon Jun 17 09:06:39 2013
New Revision: 1493686

URL: http://svn.apache.org/r1493686
Log:
Bug 54607: Add unit test and fix NPE for getTopRow() and getLeftCol()

Added:
    poi/trunk/test-data/spreadsheet/54607.xlsx
Modified:
    poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
    poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java?rev=1493686&r1=1493685&r2=1493686&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java Mon Jun 17 09:06:39 2013
@@ -866,6 +866,9 @@ public class XSSFSheet extends POIXMLDoc
 
     public short getLeftCol() {
         String cellRef = worksheet.getSheetViews().getSheetViewArray(0).getTopLeftCell();
+        if(cellRef == null) {
+        	return 0;
+        }
         CellReference cellReference = new CellReference(cellRef);
         return cellReference.getCol();
     }
@@ -1178,6 +1181,9 @@ public class XSSFSheet extends POIXMLDoc
      */
     public short getTopRow() {
         String cellRef = getSheetTypeSheetView().getTopLeftCell();
+        if(cellRef == null) {
+        	return 0;
+        }
         CellReference cellReference = new CellReference(cellRef);
         return (short) cellReference.getRow();
     }

Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java?rev=1493686&r1=1493685&r2=1493686&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java Mon Jun 17 09:06:39 2013
@@ -17,18 +17,29 @@
 
 package org.apache.poi.xssf.usermodel;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
 import java.util.List;
 
-import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.hssf.HSSFTestDataSamples;
+import org.apache.poi.hssf.record.PasswordRecord;
+import org.apache.poi.ss.usermodel.BaseTestSheet;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.CreationHelper;
+import org.apache.poi.ss.usermodel.RichTextString;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
 import org.apache.poi.ss.util.CellRangeAddress;
+import org.apache.poi.util.HexDump;
 import org.apache.poi.xssf.XSSFITestDataProvider;
 import org.apache.poi.xssf.XSSFTestDataSamples;
+import org.apache.poi.xssf.model.CalculationChain;
 import org.apache.poi.xssf.model.CommentsTable;
 import org.apache.poi.xssf.model.StylesTable;
-import org.apache.poi.xssf.model.CalculationChain;
+import org.apache.poi.xssf.streaming.SXSSFWorkbook;
 import org.apache.poi.xssf.usermodel.helpers.ColumnHelper;
-import org.apache.poi.util.HexDump;
-import org.apache.poi.hssf.record.PasswordRecord;
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.*;
 
 
@@ -1091,4 +1102,66 @@ public final class TestXSSFSheet extends
          sheet = workbook.getSheet("Sheet 1");
          assertEquals(false, sheet.getForceFormulaRecalculation());
 	}
+
+    public void test54607() {
+    	// run with the file provided in the Bug-Report
+    	runGetTopRow("54607.xlsx", true, 1, 0, 0);    	
+    	runGetLeftCol("54607.xlsx", true, 0, 0, 0);    	
+    	
+    	// run with some other flie to see 
+    	runGetTopRow("54436.xlsx", true, 0);
+    	runGetLeftCol("54436.xlsx", true, 0);
+    	runGetTopRow("TwoSheetsNoneHidden.xlsx", true, 0, 0);
+    	runGetLeftCol("TwoSheetsNoneHidden.xlsx", true, 0, 0);
+    	runGetTopRow("TwoSheetsNoneHidden.xls", false, 0, 0);
+    	runGetLeftCol("TwoSheetsNoneHidden.xls", false, 0, 0);
+    }
+
+	private void runGetTopRow(String file, boolean isXSSF, int... topRows) {
+		final Workbook wb;
+		if(isXSSF) {
+			wb = XSSFTestDataSamples.openSampleWorkbook(file);
+		} else {
+			wb = HSSFTestDataSamples.openSampleWorkbook(file);
+		}
+    	for (int si = 0; si < wb.getNumberOfSheets(); si++) {
+    		Sheet sh = wb.getSheetAt(si);
+    		assertNotNull(sh.getSheetName());
+    		assertEquals("Did not match for sheet " + si, topRows[si], sh.getTopRow());
+    	}
+
+    	// for XSSF also test with SXSSF
+    	if(isXSSF) {
+			Workbook swb = new SXSSFWorkbook((XSSFWorkbook) wb);
+	    	for (int si = 0; si < swb.getNumberOfSheets(); si++) {
+	    		Sheet sh = swb.getSheetAt(si);
+	    		assertNotNull(sh.getSheetName());
+	    		assertEquals("Did not match for sheet " + si, topRows[si], sh.getTopRow());
+	    	}
+    	}
+	}
+
+	private void runGetLeftCol(String file, boolean isXSSF, int... topRows) {
+		final Workbook wb;
+		if(isXSSF) {
+			wb = XSSFTestDataSamples.openSampleWorkbook(file);
+		} else {
+			wb = HSSFTestDataSamples.openSampleWorkbook(file);
+		}
+    	for (int si = 0; si < wb.getNumberOfSheets(); si++) {
+    		Sheet sh = wb.getSheetAt(si);
+    		assertNotNull(sh.getSheetName());
+    		assertEquals("Did not match for sheet " + si, topRows[si], sh.getLeftCol());
+    	}
+
+    	// for XSSF also test with SXSSF
+    	if(isXSSF) {
+			Workbook swb = new SXSSFWorkbook((XSSFWorkbook) wb);
+	    	for (int si = 0; si < swb.getNumberOfSheets(); si++) {
+	    		Sheet sh = swb.getSheetAt(si);
+	    		assertNotNull(sh.getSheetName());
+	    		assertEquals("Did not match for sheet " + si, topRows[si], sh.getLeftCol());
+	    	}
+    	}
+	}
 }

Added: poi/trunk/test-data/spreadsheet/54607.xlsx
URL: http://svn.apache.org/viewvc/poi/trunk/test-data/spreadsheet/54607.xlsx?rev=1493686&view=auto
==============================================================================
Files poi/trunk/test-data/spreadsheet/54607.xlsx (added) and poi/trunk/test-data/spreadsheet/54607.xlsx Mon Jun 17 09:06:39 2013 differ



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