BUG 27496: get/setPageBreak and get/getColumnBreak now work correctly if a template excel file is loaded which does not contain PaneRecords is loaded.

git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@441652 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Jason Height 2006-09-08 21:09:48 +00:00
parent 373e9d5613
commit 19ced80f3c
2 changed files with 42 additions and 19 deletions

View File

@ -2666,7 +2666,12 @@ public class Sheet implements Model
* Sets a page break at the indicated row
* @param row
*/
public void setRowBreak(int row, short fromCol, short toCol) {
public void setRowBreak(int row, short fromCol, short toCol) {
if (rowBreaks == null) {
int loc = findFirstRecordLocBySid(WindowTwoRecord.sid);
rowBreaks = new PageBreakRecord(PageBreakRecord.HORIZONTAL_SID);
records.add(loc, rowBreaks);
}
rowBreaks.addBreak((short)row, fromCol, toCol);
}
@ -2675,6 +2680,8 @@ public class Sheet implements Model
* @param row
*/
public void removeRowBreak(int row) {
if (rowBreaks == null)
throw new IllegalArgumentException("Sheet does not define any row breaks");
rowBreaks.removeBreak((short)row);
}
@ -2684,14 +2691,19 @@ public class Sheet implements Model
* @return true if the specified row has a page break
*/
public boolean isRowBroken(int row) {
return rowBreaks.getBreak((short)row) != null;
return (rowBreaks == null) ? false : rowBreaks.getBreak((short)row) != null;
}
/**
* Sets a page break at the indicated column
*
*/
public void setColumnBreak(short column, short fromRow, short toRow) {
public void setColumnBreak(short column, short fromRow, short toRow) {
if (colBreaks == null) {
int loc = findFirstRecordLocBySid(WindowTwoRecord.sid);
colBreaks = new PageBreakRecord(PageBreakRecord.VERTICAL_SID);
records.add(loc, colBreaks);
}
colBreaks.addBreak(column, fromRow, toRow);
}
@ -2700,6 +2712,9 @@ public class Sheet implements Model
*
*/
public void removeColumnBreak(short column) {
if (colBreaks == null)
throw new IllegalArgumentException("Sheet does not define any column breaks");
colBreaks.removeBreak(column);
}
@ -2709,7 +2724,7 @@ public class Sheet implements Model
* @return true if the specified column has a page break
*/
public boolean isColumnBroken(short column) {
return colBreaks.getBreak(column) != null;
return (colBreaks == null) ? false : colBreaks.getBreak(column) != null;
}
/**
@ -2745,7 +2760,7 @@ public class Sheet implements Model
* @return the number of row page breaks
*/
public int getNumRowBreaks(){
return (int)rowBreaks.getNumBreaks();
return (rowBreaks == null) ? 0 : (int)rowBreaks.getNumBreaks();
}
/**
@ -2761,7 +2776,7 @@ public class Sheet implements Model
* @return the number of column page breaks
*/
public int getNumColumnBreaks(){
return (int)colBreaks.getNumBreaks();
return (colBreaks == null) ? 0 : (int)colBreaks.getNumBreaks();
}
public void setColumnGroupCollapsed( short columnNumber, boolean collapsed )

View File

@ -1204,34 +1204,42 @@ public class HSSFSheet
/**
* Retrieves all the horizontal page breaks
* @return all the horizontal page breaks
* @return all the horizontal page breaks, or null if there are no row page breaks
*/
public int[] getRowBreaks(){
//we can probably cache this information, but this should be a sparsely used function
int[] returnValue = new int[sheet.getNumRowBreaks()];
Iterator iterator = sheet.getRowBreaks();
int i = 0;
while (iterator.hasNext()) {
//we can probably cache this information, but this should be a sparsely used function
int count = sheet.getNumRowBreaks();
if (count > 0) {
int[] returnValue = new int[count];
Iterator iterator = sheet.getRowBreaks();
int i = 0;
while (iterator.hasNext()) {
PageBreakRecord.Break breakItem = (PageBreakRecord.Break)iterator.next();
returnValue[i++] = (int)breakItem.main;
}
return returnValue;
}
return returnValue;
return null;
}
/**
* Retrieves all the vertical page breaks
* @return all the vertical page breaks
* @return all the vertical page breaks, or null if there are no column page breaks
*/
public short[] getColumnBreaks(){
//we can probably cache this information, but this should be a sparsely used function
short[] returnValue = new short[sheet.getNumColumnBreaks()];
Iterator iterator = sheet.getColumnBreaks();
int i = 0;
while (iterator.hasNext()) {
int count = sheet.getNumColumnBreaks();
if (count > 0) {
short[] returnValue = new short[count];
Iterator iterator = sheet.getColumnBreaks();
int i = 0;
while (iterator.hasNext()) {
PageBreakRecord.Break breakItem = (PageBreakRecord.Break)iterator.next();
returnValue[i++] = breakItem.main;
}
return returnValue;
}
return returnValue;
return null;
}