JAva poi操作Excel削除行内容と直接削除行

2390 ワード

一般的に、行を削除すると、行の内容は削除されますが、行の位置は保持され、行全体が削除されます(削除後、下のセルが上に移動します).対応する削除方法は、次のとおりです.
void removeRow(Row row)//Remove a row from this sheet. All cells contained in the row are removed as well

public void shiftRows(int startRow,int endRow,int n)//Shifts rows between startRow and endRow n number of rows.

サンプルコード:
次のコードは、removeRow()メソッドを使用して行の内容を削除し、行の位置を保持します.コードはd:test.xlsの最初のsheetから最初の行を削除します.変更はworkbook.write以降に有効になる必要があることに注意してください.
import org.apache.poi.hssf.usermodel.*;
import java.io.*;
public class testTools{
     public static void main(String[] args){
        try {
            FileInputStream is = new FileInputStream("d://test.xls");
            HSSFWorkbook workbook = new HSSFWorkbook(is);
            HSSFSheet sheet = workbook.getSheetAt(0);
            HSSFRow row = sheet.getRow(0);
            sheet.removeRow(row);
            FileOutputStream os = new FileOutputStream("d://test.xls");
            workbook.write(os);
            is.close();
            os.close();
        } catch (Exception e) { 
            e.printStackTrace();
        }
     }
}

次のコードはshiftRowを使用して行全体を削除する効果です.同様に、workbook.writeを行ってから有効になる必要があります.
import org.apache.poi.hssf.usermodel.*;  
import java.io.*;  
public class testTools{  
     public static void main(String[] args){  
        try {  
            FileInputStream is = new FileInputStream("d://test.xls");  
            HSSFWorkbook workbook = new HSSFWorkbook(is);  
            HSSFSheet sheet = workbook.getSheetAt(0);  
            sheet.shiftRows(1, 4, -1);//         ,            
            FileOutputStream os = new FileOutputStream("d://test.xls");  
            workbook.write(os);  
            is.close();  
            os.close();  
        } catch (Exception e) {   
            e.printStackTrace();  
        }  
     }  
} 

自分で書いたパッケージのexcel行を削除する方法(shiftRows上で移動して行を削除する):
 /** 
 * Remove a row by its index 
 * @param sheet a Excel sheet 
 * @param rowIndex a 0 based index of removing row 
 */  
public static void removeRow(HSSFSheet sheet, int rowIndex) {  
    int lastRowNum=sheet.getLastRowNum();  
    if(rowIndex>=0&&rowIndex