-1

たとえば、空の 3,4 行と 6 行目の Excel シートがあります (以前は、これらの行に対して sheet.removeRow() を呼び出していました)。全部で7行あります

今、それらの空の行のインデックスを持っているので、それらを削除(シフト)したいです。

関数 shiftRows(rowIndex+1, lastRowNum, -1) を呼び出すと、取得します

 java.lang.IllegalArgumentException: Minumum row number is 0

これは私の実装です

 List<Integer> rowsToRemove = [2,3,5];
 for (Integer rowIndex : rowsToRemove) {
     removeRow(sheet, rowIndex);
 }
 int lastRowNum = sheet.getLastRowNum();
 for (Integer rowIndex : rowsToRemove) {
     shiftRow(sheet, rowIndex, lastRowNum);
 }


/**
* 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) {

   HSSFRow removingRow = sheet.getRow(rowIndex);
   if(removingRow!=null) {
       sheet.removeRow(removingRow);
   }
}

public static void shiftRow(HSSFSheet sheet, int rowIndex, int lastRowNum) {
   if (rowIndex >= 0 && rowIndex < lastRowNum) {
       sheet.shiftRows(rowIndex+1, lastRowNum, -1);
   }
}

これらの空の行を削除するのを手伝ってもらえますか?? Excel ファイルから空行を削除するソリューションが必要です。

ありがとう

4

1 に答える 1

0

このシナリオは、列のセルが結合されていない場合にのみ機能します。それらがマージされると、poi で例外が発生します。

于 2012-12-19T10:17:10.323 に答える