WorkBookを持っていて、名前が特定の文字列と一致しないシートを削除しようとしています。
これが私のコードです
XSSFWorkbook book = new XSSFWorkbook(new FileInputStream(excelName));
for(int i=0;i<book.getNumberOfSheets();i++){
System.out.println(book.getSheetAt(i).getSheetName());
if(!book.getSheetAt(i).getSheetName().equals(sheetName)){
book.removeSheetAt(i);
}
}
コードは正常に実行されますが、目的のタスクを実行しません
編集
上記の解決策は、ループの順序を逆にすることです。これがよりクリーンなコードです
private void removeOtherSheets(String sheetName, XSSFWorkbook book) {
for(int i=book.getNumberOfSheets()-1;i>=0;i--){
XSSFSheet tmpSheet =book.getSheetAt(i);
if(!tmpSheet.getSheetName().equals(sheetName)){
book.removeSheetAt(i);
}
}
}