Bug 46192: Add methods to query outline level for HSSF and XSSF
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1649107 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
b2a69b6152
commit
12edcc5ed2
@ -1667,4 +1667,8 @@ public final class InternalSheet {
|
|||||||
temp.toArray(result);
|
temp.toArray(result);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getColumnOutlineLevel(int columnIndex) {
|
||||||
|
return _columnInfos.getOutlineLevel(columnIndex);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -520,4 +520,12 @@ public final class ColumnInfoRecordsAggregate extends RecordAggregate {
|
|||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
public int getOutlineLevel(int columnIndex) {
|
||||||
|
ColumnInfoRecord ci = findColumnInfo(columnIndex);
|
||||||
|
if (ci != null) {
|
||||||
|
return ci.getOutlineLevel();
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -268,9 +268,8 @@ public final class HSSFRow implements Row {
|
|||||||
* Returns the rows outline level. Increased as you
|
* Returns the rows outline level. Increased as you
|
||||||
* put it into more groups (outlines), reduced as
|
* put it into more groups (outlines), reduced as
|
||||||
* you take it out of them.
|
* you take it out of them.
|
||||||
* TODO - Should this really be public?
|
|
||||||
*/
|
*/
|
||||||
protected int getOutlineLevel() {
|
public int getOutlineLevel() {
|
||||||
return row.getOutlineLevel();
|
return row.getOutlineLevel();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2341,5 +2341,12 @@ public final class HSSFSheet implements org.apache.poi.ss.usermodel.Sheet {
|
|||||||
return _workbook.getNameRecord(recIndex);
|
return _workbook.getNameRecord(recIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the column outline level. Increased as you
|
||||||
|
* put it into more groups (outlines), reduced as
|
||||||
|
* you take it out of them.
|
||||||
|
*/
|
||||||
|
public int getColumnOutlineLevel(int columnIndex) {
|
||||||
|
return _sheet.getColumnOutlineLevel(columnIndex);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -234,4 +234,11 @@ public interface Row extends Iterable<Cell> {
|
|||||||
public static final MissingCellPolicy RETURN_BLANK_AS_NULL = new MissingCellPolicy();
|
public static final MissingCellPolicy RETURN_BLANK_AS_NULL = new MissingCellPolicy();
|
||||||
/** A new, blank cell is created for missing cells. Blank cells are returned as normal */
|
/** A new, blank cell is created for missing cells. Blank cells are returned as normal */
|
||||||
public static final MissingCellPolicy CREATE_NULL_AS_BLANK = new MissingCellPolicy();
|
public static final MissingCellPolicy CREATE_NULL_AS_BLANK = new MissingCellPolicy();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the rows outline level. Increased as you
|
||||||
|
* put it into more groups (outlines), reduced as
|
||||||
|
* you take it out of them.
|
||||||
|
*/
|
||||||
|
public int getOutlineLevel();
|
||||||
}
|
}
|
||||||
|
@ -1054,4 +1054,10 @@ public interface Sheet extends Iterable<Row> {
|
|||||||
*/
|
*/
|
||||||
void setRepeatingColumns(CellRangeAddress columnRangeRef);
|
void setRepeatingColumns(CellRangeAddress columnRangeRef);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the column outline level. Increased as you
|
||||||
|
* put it into more groups (outlines), reduced as
|
||||||
|
* you take it out of them.
|
||||||
|
*/
|
||||||
|
int getColumnOutlineLevel(int columnIndex);
|
||||||
}
|
}
|
||||||
|
@ -58,7 +58,7 @@ public class SXSSFRow implements Row
|
|||||||
return _height!=-1;
|
return _height!=-1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int getOutlineLevel(){
|
public int getOutlineLevel(){
|
||||||
return _outlineLevel;
|
return _outlineLevel;
|
||||||
}
|
}
|
||||||
void setOutlineLevel(int level){
|
void setOutlineLevel(int level){
|
||||||
|
@ -1477,4 +1477,8 @@ public class SXSSFSheet implements Sheet, Cloneable
|
|||||||
boolean dispose() {
|
boolean dispose() {
|
||||||
return _writer.dispose();
|
return _writer.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getColumnOutlineLevel(int columnIndex) {
|
||||||
|
return _sh.getColumnOutlineLevel(columnIndex);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -513,4 +513,8 @@ public class XSSFRow implements Row, Comparable<XSSFRow> {
|
|||||||
}
|
}
|
||||||
setRowNum(rownum);
|
setRowNum(rownum);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getOutlineLevel() {
|
||||||
|
return _row.getOutlineLevel();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -3821,4 +3821,12 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
|
|||||||
}
|
}
|
||||||
return tables;
|
return tables;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getColumnOutlineLevel(int columnIndex) {
|
||||||
|
CTCol col = columnHelper.getColumn(columnIndex, false);
|
||||||
|
if (col == null) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return col.getOutlineLevel();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,11 +19,18 @@
|
|||||||
|
|
||||||
package org.apache.poi.xssf.streaming;
|
package org.apache.poi.xssf.streaming;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
|
import org.apache.poi.hssf.usermodel.HSSFSheet;
|
||||||
|
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
||||||
|
import org.apache.poi.ss.usermodel.Sheet;
|
||||||
|
import org.apache.poi.xssf.usermodel.XSSFSheet;
|
||||||
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||||
|
|
||||||
public final class TestOutlining extends TestCase {
|
public final class TestOutlining extends TestCase {
|
||||||
public void testSetRowGroupCollapsed() throws Exception {
|
public void testSetRowGroupCollapsed() throws Exception {
|
||||||
|
|
||||||
SXSSFWorkbook wb2 = new SXSSFWorkbook(100);
|
SXSSFWorkbook wb2 = new SXSSFWorkbook(100);
|
||||||
wb2.setCompressTempFiles(true);
|
wb2.setCompressTempFiles(true);
|
||||||
SXSSFSheet sheet2 = (SXSSFSheet) wb2.createSheet("new sheet");
|
SXSSFSheet sheet2 = (SXSSFSheet) wb2.createSheet("new sheet");
|
||||||
@ -45,10 +52,11 @@ public final class TestOutlining extends TestCase {
|
|||||||
r = (SXSSFRow) sheet2.getRow(12);
|
r = (SXSSFRow) sheet2.getRow(12);
|
||||||
assertNull(r.getHidden());
|
assertNull(r.getHidden());
|
||||||
wb2.dispose();
|
wb2.dispose();
|
||||||
|
|
||||||
|
wb2.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testSetRowGroupCollapsedError() throws Exception {
|
public void testSetRowGroupCollapsedError() throws Exception {
|
||||||
|
|
||||||
SXSSFWorkbook wb2 = new SXSSFWorkbook(100);
|
SXSSFWorkbook wb2 = new SXSSFWorkbook(100);
|
||||||
wb2.setCompressTempFiles(true);
|
wb2.setCompressTempFiles(true);
|
||||||
SXSSFSheet sheet2 = (SXSSFSheet) wb2.createSheet("new sheet");
|
SXSSFSheet sheet2 = (SXSSFSheet) wb2.createSheet("new sheet");
|
||||||
@ -98,5 +106,61 @@ public final class TestOutlining extends TestCase {
|
|||||||
r = (SXSSFRow) sheet2.getRow(12);
|
r = (SXSSFRow) sheet2.getRow(12);
|
||||||
assertNull(r.getHidden());
|
assertNull(r.getHidden());
|
||||||
wb2.dispose();
|
wb2.dispose();
|
||||||
|
|
||||||
|
wb2.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testOutlineGetters() throws IOException {
|
||||||
|
HSSFWorkbook hssfWorkbook = new HSSFWorkbook();
|
||||||
|
HSSFSheet hssfSheet = hssfWorkbook.createSheet();
|
||||||
|
hssfSheet.createRow(0);
|
||||||
|
hssfSheet.createRow(1);
|
||||||
|
hssfSheet.createRow(2);
|
||||||
|
hssfSheet.createRow(3);
|
||||||
|
hssfSheet.createRow(4);
|
||||||
|
hssfSheet.groupRow(1, 3);
|
||||||
|
hssfSheet.groupRow(2, 3);
|
||||||
|
|
||||||
|
assertEquals(0, hssfSheet.getRow(0).getOutlineLevel());
|
||||||
|
assertEquals(1, hssfSheet.getRow(1).getOutlineLevel());
|
||||||
|
assertEquals(2, hssfSheet.getRow(2).getOutlineLevel());
|
||||||
|
assertEquals(2, hssfSheet.getRow(3).getOutlineLevel());
|
||||||
|
assertEquals(0, hssfSheet.getRow(4).getOutlineLevel());
|
||||||
|
hssfWorkbook.close();
|
||||||
|
|
||||||
|
XSSFWorkbook xssfWorkbook = new XSSFWorkbook();
|
||||||
|
XSSFSheet xssfSheet = xssfWorkbook.createSheet();
|
||||||
|
xssfSheet.createRow(0);
|
||||||
|
xssfSheet.createRow(1);
|
||||||
|
xssfSheet.createRow(2);
|
||||||
|
xssfSheet.createRow(3);
|
||||||
|
xssfSheet.createRow(4);
|
||||||
|
xssfSheet.groupRow(1, 3);
|
||||||
|
xssfSheet.groupRow(2, 3);
|
||||||
|
|
||||||
|
assertEquals(0, xssfSheet.getRow(0).getOutlineLevel());
|
||||||
|
assertEquals(1, xssfSheet.getRow(1).getOutlineLevel());
|
||||||
|
assertEquals(2, xssfSheet.getRow(2).getOutlineLevel());
|
||||||
|
assertEquals(2, xssfSheet.getRow(3).getOutlineLevel());
|
||||||
|
assertEquals(0, xssfSheet.getRow(4).getOutlineLevel());
|
||||||
|
xssfWorkbook.close();
|
||||||
|
|
||||||
|
SXSSFWorkbook sxssfWorkbook = new SXSSFWorkbook();
|
||||||
|
Sheet sxssfSheet = sxssfWorkbook.createSheet();
|
||||||
|
sxssfSheet.createRow(0);
|
||||||
|
sxssfSheet.createRow(1);
|
||||||
|
sxssfSheet.createRow(2);
|
||||||
|
sxssfSheet.createRow(3);
|
||||||
|
sxssfSheet.createRow(4);
|
||||||
|
sxssfSheet.groupRow(1, 3);
|
||||||
|
sxssfSheet.groupRow(2, 3);
|
||||||
|
|
||||||
|
assertEquals(0, sxssfSheet.getRow(0).getOutlineLevel());
|
||||||
|
assertEquals(1, sxssfSheet.getRow(1).getOutlineLevel());
|
||||||
|
assertEquals(2, sxssfSheet.getRow(2).getOutlineLevel());
|
||||||
|
assertEquals(2, sxssfSheet.getRow(3).getOutlineLevel());
|
||||||
|
assertEquals(0, sxssfSheet.getRow(4).getOutlineLevel());
|
||||||
|
sxssfWorkbook.dispose();
|
||||||
|
sxssfWorkbook.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user