2016-11-03 4 views
1

Я получаю эту ошибку:Excel лист POI Workbook уже содержит лист

учебное пособие уже содержит лист этого имени

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) должна проверить, в книге уже содержится лист этого имени, но он не работает. У меня все еще есть ошибка.

Благодарим за помощь!

+0

Это происходит от первой итерации (у вас есть цикл while)? Можете ли вы привести пример, каковы имена листов? Кроме того, вы можете немного объяснить свой код, похоже, что он перебирает переменную 'maxIndex', но эта переменная увеличивается только внутри оператора' if', который проверяет 'sheet == null'. Я не знаю, чего вы хотите достичь, но выглядит немного странно. – pleft

ответ

1

Вы пробовали переместить String sheetName = ... внутри вашей петли while?

Как вы это сделали, он всегда пытается удалить и воссоздать один и тот же 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++; 
     } 
    } 
} 
Смежные вопросы