-1

我有一个 excel 表,例如 3,4 和第 6 行是空的(以前我为这些行调用了 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 回答