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