удалить строку Excel, содержащую определенный текст, используя Apache_poi

1

Я пытаюсь удалить строку Excel, которая имеет определенные данные. Ex: удалить строку, в которой номер студенческого рулона равен 1.Below - это то, что я сделал до сих пор, но это не сработает.

   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;
           }
        }
    }
   }
Теги:
excel
swing
apache-poi

1 ответ

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++) {
}
  • 0
    Вот пример реализации removeRow() .

Ещё вопросы

Сообщество Overcoder
Наверх
Меню