From 0efcacb011e564eb37e754f7fc8d0c965d631eb1 Mon Sep 17 00:00:00 2001 From: Shawn Laubach Date: Fri, 16 May 2003 16:30:46 +0000 Subject: [PATCH] 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 --- .../apache/poi/hssf/usermodel/HSSFSheet.java | 36 ++++++++++++++++--- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java b/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java index cbfb2ef521..a1a6e795fc 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java @@ -887,6 +887,21 @@ public class HSSFSheet getSheet().setSCLRecord(sclRecord); } + /** + * 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. + * + * Calls shiftRows(startRow, endRow, n, false, false); + * + * @param startRow the row to start shifting + * @param endRow the row to end shifting + * @param n the number of rows to shift + */ + 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. @@ -895,8 +910,10 @@ public class HSSFSheet * @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 ) + public void shiftRows( int startRow, int endRow, int n, boolean copyRowHeight, boolean resetOriginalRowHeight) { int s, e, inc; if ( n < 0 ) @@ -914,18 +931,29 @@ public class HSSFSheet for ( int rowNum = s; rowNum >= startRow && rowNum <= endRow && rowNum >= 0 && rowNum < 65536; rowNum += inc ) { HSSFRow row = getRow( rowNum ); - HSSFRow row2Replace = getRow( rowNum + n ); + HSSFRow row2Replace = getRow( rowNum + n ); if ( row2Replace == null ) row2Replace = createRow( rowNum + n ); - + HSSFCell cell; + + // Removes the cells before over writting them. for ( short col = row2Replace.getFirstCellNum(); col <= row2Replace.getLastCellNum(); col++ ) { cell = row2Replace.getCell( col ); if ( cell != null ) 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++ ) { cell = row.getCell( col ); -- 2.39.5