5

POIを使用してExcelシートから空白行を削除したい。

shiftRow()またはのようなメソッドremoveRow()がありますが、この場合は使用できません。私がそれを成し遂げるのを手伝ってください。

4

4 に答える 4

4

次のコードを試してください。複数の連続した空白行が存在する場合にも機能します。

    for(int i = 0; i < sheet.getLastRowNum(); i++){
        if(sheet.getRow(i)==null){
            isRowEmpty=true;
            sheet.shiftRows(i + 1, sheet.getLastRowNum(), -1);
            i--;
        continue;
        }
        for(int j =0; j<sheet.getRow(i).getLastCellNum();j++){
            if(sheet.getRow(i).getCell(j).toString().trim().equals("")){
                isRowEmpty=true;
            }else {
                isRowEmpty=false;
                break;
            }
        }
        if(isRowEmpty==true){
            sheet.shiftRows(i + 1, sheet.getLastRowNum(), -1);
            i--;
        }
    }
于 2013-05-15T10:44:36.153 に答える
3

@Sankumarsingh コードを変更して機能させる

@Sankumarsinghコードは、空の最初の行を削除していなかったため、機能しませんでした。この問題の修正は次のとおりです。

private void removeEmptyRows(XSSFSheet sheet) {
    Boolean isRowEmpty = Boolean.FALSE;
    for(int i = 0; i <= sheet.getLastRowNum(); i++){
      if(sheet.getRow(i)==null){
        isRowEmpty=true;
        sheet.shiftRows(i + 1, sheet.getLastRowNum()+1, -1);
        i--;
        continue;
      }
      for(int j =0; j<sheet.getRow(i).getLastCellNum();j++){
        if(sheet.getRow(i).getCell(j) == null || 
        sheet.getRow(i).getCell(j).toString().trim().equals("")){
          isRowEmpty=true;
        }else {
          isRowEmpty=false;
          break;
        }
      }
      if(isRowEmpty==true){
        sheet.shiftRows(i + 1, sheet.getLastRowNum()+1, -1);
        i--;
      }
    }
  }
于 2018-09-18T23:34:22.157 に答える
1

テストされていませんが、これを試してください:

HSSFSheet sheet = workBook.getSheetAt(0);
HSSFRow row = sheet.getRow(0);
sheet.removeRow(row);
于 2012-09-12T06:13:08.697 に答える