Added ability to copy row height during shift. Also gave the ability to reset the row height on a shift for the original rows.

git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@353100 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Shawn Laubach 2003-05-16 16:30:46 +00:00
parent 0d052c1037
commit 7b6ec9633e

View File

@ -890,13 +890,30 @@ public class HSSFSheet
/** /**
* Shifts rows between startRow and endRow n number of rows. * Shifts rows between startRow and endRow n number of rows.
* If you use a negative number, it will shift rows up. * If you use a negative number, it will shift rows up.
* Code ensures that rows don't wrap around * Code ensures that rows don't wrap around.
*
* Calls shiftRows(startRow, endRow, n, false, false);
* *
* @param startRow the row to start shifting * @param startRow the row to start shifting
* @param endRow the row to end shifting * @param endRow the row to end shifting
* @param n the number of rows to shift * @param n the number of rows to shift
*/ */
public void shiftRows( int startRow, int endRow, int n ) public void shiftRows( int startRow, int endRow, int n ) {
shiftRows(startRow, endRow, n, false, false);
}
/**
* Shifts rows between startRow and endRow n number of rows.
* If you use a negative number, it will shift rows up.
* Code ensures that rows don't wrap around
*
* @param startRow the row to start shifting
* @param endRow the row to end shifting
* @param n the number of rows to shift
* @param copyRowHeight whether to copy the row height during the shift
* @param resetOriginalRowHeight whether to set the original row's height to the default
*/
public void shiftRows( int startRow, int endRow, int n, boolean copyRowHeight, boolean resetOriginalRowHeight)
{ {
int s, e, inc; int s, e, inc;
if ( n < 0 ) if ( n < 0 )
@ -914,18 +931,29 @@ public class HSSFSheet
for ( int rowNum = s; rowNum >= startRow && rowNum <= endRow && rowNum >= 0 && rowNum < 65536; rowNum += inc ) for ( int rowNum = s; rowNum >= startRow && rowNum <= endRow && rowNum >= 0 && rowNum < 65536; rowNum += inc )
{ {
HSSFRow row = getRow( rowNum ); HSSFRow row = getRow( rowNum );
HSSFRow row2Replace = getRow( rowNum + n ); HSSFRow row2Replace = getRow( rowNum + n );
if ( row2Replace == null ) if ( row2Replace == null )
row2Replace = createRow( rowNum + n ); row2Replace = createRow( rowNum + n );
HSSFCell cell; HSSFCell cell;
// Removes the cells before over writting them.
for ( short col = row2Replace.getFirstCellNum(); col <= row2Replace.getLastCellNum(); col++ ) for ( short col = row2Replace.getFirstCellNum(); col <= row2Replace.getLastCellNum(); col++ )
{ {
cell = row2Replace.getCell( col ); cell = row2Replace.getCell( col );
if ( cell != null ) if ( cell != null )
row2Replace.removeCell( cell ); row2Replace.removeCell( cell );
} }
if (row == null) continue; if (row == null) continue; // Nothing to do for this row
else {
if (copyRowHeight) {
row2Replace.setHeight(row.getHeight());
}
if (resetOriginalRowHeight) {
row.setHeight((short)0xff);
}
}
for ( short col = row.getFirstCellNum(); col <= row.getLastCellNum(); col++ ) for ( short col = row.getFirstCellNum(); col <= row.getLastCellNum(); col++ )
{ {
cell = row.getCell( col ); cell = row.getCell( col );