![](/img/trans.png)
[英]Using JAVA to create Excel file: The workbook already contains a sheet of this name
[英]Excel sheet POI Workbook already contains sheet
我收到此錯誤:
工作簿已經包含一張同名的工作表
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)
應該檢查工作簿是否已經包含此名稱的工作表,但它不起作用。 我仍然有錯誤。
感謝您的幫助 !
您是否嘗試在while
循環中移動String sheetName = ...
?
按照您的做法,它總是嘗試在每個循環中刪除並重新創建相同的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++;
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.