Bug 55248: Add methods for showInPane() using int and unit test to verify it can handle more than 32767 rows
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1502749 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
d5528af80c
commit
59455c36a1
@ -778,6 +778,20 @@ public class SXSSFSheet implements Sheet, Cloneable
|
|||||||
* @param toprow the top row to show in desktop window pane
|
* @param toprow the top row to show in desktop window pane
|
||||||
* @param leftcol the left column to show in desktop window pane
|
* @param leftcol the left column to show in desktop window pane
|
||||||
*/
|
*/
|
||||||
|
public void showInPane(int toprow, int leftcol)
|
||||||
|
{
|
||||||
|
_sh.showInPane(toprow, leftcol);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets desktop window pane display area, when the
|
||||||
|
* file is first opened in a viewer.
|
||||||
|
*
|
||||||
|
* @param toprow the top row to show in desktop window pane
|
||||||
|
* @param leftcol the left column to show in desktop window pane
|
||||||
|
*
|
||||||
|
* @deprecated Use the version of showInPane() with ints as there can be more than 32767 rows.
|
||||||
|
*/
|
||||||
public void showInPane(short toprow, short leftcol)
|
public void showInPane(short toprow, short leftcol)
|
||||||
{
|
{
|
||||||
_sh.showInPane(toprow, leftcol);
|
_sh.showInPane(toprow, leftcol);
|
||||||
|
@ -2386,12 +2386,25 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
|
|||||||
* @param toprow the top row to show in desktop window pane
|
* @param toprow the top row to show in desktop window pane
|
||||||
* @param leftcol the left column to show in desktop window pane
|
* @param leftcol the left column to show in desktop window pane
|
||||||
*/
|
*/
|
||||||
public void showInPane(short toprow, short leftcol) {
|
public void showInPane(int toprow, int leftcol) {
|
||||||
CellReference cellReference = new CellReference(toprow, leftcol);
|
CellReference cellReference = new CellReference(toprow, leftcol);
|
||||||
String cellRef = cellReference.formatAsString();
|
String cellRef = cellReference.formatAsString();
|
||||||
getPane().setTopLeftCell(cellRef);
|
getPane().setTopLeftCell(cellRef);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Location of the top left visible cell Location of the top left visible cell in the bottom right
|
||||||
|
* pane (when in Left-to-Right mode).
|
||||||
|
*
|
||||||
|
* @param toprow the top row to show in desktop window pane
|
||||||
|
* @param leftcol the left column to show in desktop window pane
|
||||||
|
*
|
||||||
|
* @deprecated Use the version of showInPane() with ints as there can be more than 32767 rows.
|
||||||
|
*/
|
||||||
|
public void showInPane(short toprow, short leftcol) {
|
||||||
|
showInPane((int)toprow, (int)leftcol);
|
||||||
|
}
|
||||||
|
|
||||||
public void ungroupColumn(int fromColumn, int toColumn) {
|
public void ungroupColumn(int fromColumn, int toColumn) {
|
||||||
CTCols cols = worksheet.getColsArray(0);
|
CTCols cols = worksheet.getColsArray(0);
|
||||||
for (int index = fromColumn; index <= toColumn; index++) {
|
for (int index = fromColumn; index <= toColumn; index++) {
|
||||||
|
@ -17,10 +17,6 @@
|
|||||||
|
|
||||||
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.hssf.HSSFTestDataSamples;
|
import org.apache.poi.hssf.HSSFTestDataSamples;
|
||||||
@ -33,11 +29,13 @@ import org.apache.poi.ss.usermodel.Sheet;
|
|||||||
import org.apache.poi.ss.usermodel.Workbook;
|
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.util.HexDump;
|
||||||
|
import org.apache.poi.xssf.SXSSFITestDataProvider;
|
||||||
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.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.streaming.SXSSFSheet;
|
||||||
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
|
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.openxmlformats.schemas.spreadsheetml.x2006.main.*;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.*;
|
||||||
@ -46,6 +44,8 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.*;
|
|||||||
@SuppressWarnings("deprecation") //YK: getXYZArray() array accessors are deprecated in xmlbeans with JDK 1.5 support
|
@SuppressWarnings("deprecation") //YK: getXYZArray() array accessors are deprecated in xmlbeans with JDK 1.5 support
|
||||||
public final class TestXSSFSheet extends BaseTestSheet {
|
public final class TestXSSFSheet extends BaseTestSheet {
|
||||||
|
|
||||||
|
private static final int ROW_COUNT = 40000;
|
||||||
|
|
||||||
public TestXSSFSheet() {
|
public TestXSSFSheet() {
|
||||||
super(XSSFITestDataProvider.instance);
|
super(XSSFITestDataProvider.instance);
|
||||||
}
|
}
|
||||||
@ -1079,12 +1079,12 @@ public final class TestXSSFSheet extends BaseTestSheet {
|
|||||||
* Test to trigger OOXML-LITE generating to include org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetCalcPr
|
* Test to trigger OOXML-LITE generating to include org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetCalcPr
|
||||||
*/
|
*/
|
||||||
public void testSetForceFormulaRecalculation() {
|
public void testSetForceFormulaRecalculation() {
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
XSSFWorkbook workbook = new XSSFWorkbook();
|
||||||
XSSFSheet sheet = workbook.createSheet("Sheet 1");
|
XSSFSheet sheet = workbook.createSheet("Sheet 1");
|
||||||
|
|
||||||
// Set
|
// Set
|
||||||
sheet.setForceFormulaRecalculation(true);
|
sheet.setForceFormulaRecalculation(true);
|
||||||
assertEquals(true, sheet.getForceFormulaRecalculation());
|
assertEquals(true, sheet.getForceFormulaRecalculation());
|
||||||
|
|
||||||
// calcMode="manual" is unset when forceFormulaRecalculation=true
|
// calcMode="manual" is unset when forceFormulaRecalculation=true
|
||||||
CTCalcPr calcPr = workbook.getCTWorkbook().addNewCalcPr();
|
CTCalcPr calcPr = workbook.getCTWorkbook().addNewCalcPr();
|
||||||
@ -1093,14 +1093,14 @@ public final class TestXSSFSheet extends BaseTestSheet {
|
|||||||
assertEquals(STCalcMode.AUTO, calcPr.getCalcMode());
|
assertEquals(STCalcMode.AUTO, calcPr.getCalcMode());
|
||||||
|
|
||||||
// Check
|
// Check
|
||||||
sheet.setForceFormulaRecalculation(false);
|
sheet.setForceFormulaRecalculation(false);
|
||||||
assertEquals(false, sheet.getForceFormulaRecalculation());
|
assertEquals(false, sheet.getForceFormulaRecalculation());
|
||||||
|
|
||||||
|
|
||||||
// Save, re-load, and re-check
|
// Save, re-load, and re-check
|
||||||
workbook = XSSFTestDataSamples.writeOutAndReadBack(workbook);
|
workbook = XSSFTestDataSamples.writeOutAndReadBack(workbook);
|
||||||
sheet = workbook.getSheet("Sheet 1");
|
sheet = workbook.getSheet("Sheet 1");
|
||||||
assertEquals(false, sheet.getForceFormulaRecalculation());
|
assertEquals(false, sheet.getForceFormulaRecalculation());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void test54607() {
|
public void test54607() {
|
||||||
@ -1164,4 +1164,49 @@ public final class TestXSSFSheet extends BaseTestSheet {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testShowInPaneManyRowsBug55248() {
|
||||||
|
XSSFWorkbook workbook = new XSSFWorkbook();
|
||||||
|
XSSFSheet sheet = workbook.createSheet("Sheet 1");
|
||||||
|
|
||||||
|
sheet.showInPane(0, 0);
|
||||||
|
|
||||||
|
for(int i = ROW_COUNT/2;i < ROW_COUNT;i++) {
|
||||||
|
sheet.createRow(i);
|
||||||
|
sheet.showInPane(i, 0);
|
||||||
|
// this one fails: sheet.showInPane((short)i, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
short i = 0;
|
||||||
|
sheet.showInPane(i, i);
|
||||||
|
|
||||||
|
XSSFWorkbook wb = XSSFTestDataSamples.writeOutAndReadBack(workbook);
|
||||||
|
checkRowCount(wb);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testShowInPaneManyRowsBug55248SXSSF() {
|
||||||
|
SXSSFWorkbook workbook = new SXSSFWorkbook(new XSSFWorkbook());
|
||||||
|
SXSSFSheet sheet = (SXSSFSheet) workbook.createSheet("Sheet 1");
|
||||||
|
|
||||||
|
sheet.showInPane(0, 0);
|
||||||
|
|
||||||
|
for(int i = ROW_COUNT/2;i < ROW_COUNT;i++) {
|
||||||
|
sheet.createRow(i);
|
||||||
|
sheet.showInPane(i, 0);
|
||||||
|
// this one fails: sheet.showInPane((short)i, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
short i = 0;
|
||||||
|
sheet.showInPane(i, i);
|
||||||
|
|
||||||
|
Workbook wb = SXSSFITestDataProvider.instance.writeOutAndReadBack(workbook);
|
||||||
|
checkRowCount(wb);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void checkRowCount(Workbook wb) {
|
||||||
|
assertNotNull(wb);
|
||||||
|
final Sheet sh = wb.getSheet("Sheet 1");
|
||||||
|
assertNotNull(sh);
|
||||||
|
assertEquals(ROW_COUNT-1, sh.getLastRowNum());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user