Я пытаюсь удалить строку 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;
}
}
}
}
Не забывайте, что вам нужно сохранить книгу после внесения изменений. Добавьте эти:
FileOutputStream out = new FileOutputStream ("file name");
book.write(out);
Также обратите внимание, что если нужная строка является последней, вы должны вызвать sheet.removeRow(rowIndex);
вместо shiftRows
.
Еще одно замечание: вы пропускаете последнюю строку в цикле for
пока вы работаете до LastRowNum-1
. Должен быть:
for (int rowIndex = 0; rowIndex < sheet.getLastRowNum(); rowIndex++) {
}
removeRow()
.