Excel工作表POI工作簿已包含工作表

我得到这个错误:

工作簿已经包含这个名字的一张表

private void cleanDataSheets(XSSFWorkbook workbookTemplate) { int numberOfQueries = extraction.getQueries().size(); // DATA[maxIndex][minIndex] --> ex : DATA00, DATA01, ..., DATA10 int maxIndex = 0; int minIndex = 0; String sheetName = DATA_SHEET_NAME + maxIndex + minIndex; while (maxIndex < numberOfQueries) { Sheet sheet = workbookTemplate.getSheet(sheetName); if (sheet == null) { maxIndex++; minIndex = 0; } else { workbookTemplate.removeSheetAt(workbookTemplate.getSheetIndex(sheet)); if (minIndex == 0) { if (workbookTemplate.getSheetIndex(sheetName) == -1) { workbookTemplate.createSheet(sheetName); } } minIndex++; } } } 

if (workbookTemplate.getSheetIndex(sheetName)== -1)应该检查工作簿是否已经包含这个名称的表,但它不起作用。 我仍然有错误。

感谢您的帮助 !

你有没有尝试移动String sheetName = ...在你的while循环?

你做到这一点,它总是试图删除和重新创build每个循环相同的sheetName

 private void cleanDataSheets(XSSFWorkbook workbookTemplate) { int numberOfQueries = extraction.getQueries().size(); // DATA[maxIndex][minIndex] --> ex : DATA00, DATA01, ..., DATA10 int maxIndex = 0; int minIndex = 0; while (maxIndex < numberOfQueries) { String sheetName = DATA_SHEET_NAME + maxIndex + minIndex; Sheet sheet = workbookTemplate.getSheet(sheetName); if (sheet == null) { maxIndex++; minIndex = 0; } else { workbookTemplate.removeSheetAt(workbookTemplate.getSheetIndex(sheet)); if (minIndex == 0) { if (workbookTemplate.getSheetIndex(sheetName)== -1){ workbookTemplate.createSheet(sheetName); } } minIndex++; } } }