使用Apache_poi删除包含特定文本的Excel行

时间:2014-07-19 04:17:19

标签: java excel swing apache apache-poi

我正在尝试删除具有特定数据的Excel行.Ex:删除学生卷号为1的行。这是我到目前为止所做的但是它不会工作。

   String personal=personal1.getSelectedItem().toString();
   String roll=classper.getText();
   String ps="personal";
   InputStream myxls = new FileInputStream("D:\\" + personal + ps + ".xls");
   Workbook book = new HSSFWorkbook(myxls);
   Sheet sheet = book.getSheetAt(0);
   Row Row = null;
   Cell Cell = null;
   int LastRowNum = sheet.getLastRowNum();
   for(int RowNum= 0;RowNum<LastRowNum-1;RowNum++){
        Row=sheet.getRow(RowNum);
        for(int CellNum = 0; CellNum<Row.getLastCellNum();CellNum++){
           Cell = Row.getCell(CellNum);
           String TextInCell=Cell.toString();
           if(TextInCell.contains(roll)){
              sheet.shiftRows(RowNum+1, LastRowNum, -1);
              LastRowNum--;
              RowNum--;
              break;
           }
        }
    }
   }

1 个答案:

答案 0 :(得分:2)

请勿忘记在应用更改后需要保存工作簿。添加以下内容:

FileOutputStream out = new FileOutputStream ("file name");
book.write(out);

另请注意,如果所需的行是最后一行,则应拨打sheet.removeRow(rowIndex);而不是shiftRows

另一个观察结果是,在for运行之前,您正在跳过LastRowNum-1循环中的最后一行。它应该是:

for (int rowIndex = 0; rowIndex < sheet.getLastRowNum(); rowIndex++) {
}