mirror of https://github.com/apache/poi.git
Bug 54607: Add unit test and fix NPE for getTopRow() and getLeftCol()
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1493686 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
fa19777476
commit
d1a21260ca
|
@ -866,6 +866,9 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
|
||||||
|
|
||||||
public short getLeftCol() {
|
public short getLeftCol() {
|
||||||
String cellRef = worksheet.getSheetViews().getSheetViewArray(0).getTopLeftCell();
|
String cellRef = worksheet.getSheetViews().getSheetViewArray(0).getTopLeftCell();
|
||||||
|
if(cellRef == null) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
CellReference cellReference = new CellReference(cellRef);
|
CellReference cellReference = new CellReference(cellRef);
|
||||||
return cellReference.getCol();
|
return cellReference.getCol();
|
||||||
}
|
}
|
||||||
|
@ -1178,6 +1181,9 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
|
||||||
*/
|
*/
|
||||||
public short getTopRow() {
|
public short getTopRow() {
|
||||||
String cellRef = getSheetTypeSheetView().getTopLeftCell();
|
String cellRef = getSheetTypeSheetView().getTopLeftCell();
|
||||||
|
if(cellRef == null) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
CellReference cellReference = new CellReference(cellRef);
|
CellReference cellReference = new CellReference(cellRef);
|
||||||
return (short) cellReference.getRow();
|
return (short) cellReference.getRow();
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,18 +17,29 @@
|
||||||
|
|
||||||
package org.apache.poi.xssf.usermodel;
|
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 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.ss.util.CellRangeAddress;
|
||||||
|
import org.apache.poi.util.HexDump;
|
||||||
import org.apache.poi.xssf.XSSFITestDataProvider;
|
import org.apache.poi.xssf.XSSFITestDataProvider;
|
||||||
import org.apache.poi.xssf.XSSFTestDataSamples;
|
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.CommentsTable;
|
||||||
import org.apache.poi.xssf.model.StylesTable;
|
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.xssf.usermodel.helpers.ColumnHelper;
|
||||||
import org.apache.poi.util.HexDump;
|
|
||||||
import org.apache.poi.hssf.record.PasswordRecord;
|
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.*;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.*;
|
||||||
|
|
||||||
|
|
||||||
|
@ -1091,4 +1102,66 @@ public final class TestXSSFSheet extends BaseTestSheet {
|
||||||
sheet = workbook.getSheet("Sheet 1");
|
sheet = workbook.getSheet("Sheet 1");
|
||||||
assertEquals(false, sheet.getForceFormulaRecalculation());
|
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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
Loading…
Reference in New Issue