Как обработать ошибку, если при создании копии списка, уже существует список с таким же именем?

Как изменить скрипт, чтобы при создании листов с именами из списка, которые ещё не существуют, пропускать имена, которые уже используются в документе, не прерывая процесс выполнения скрипта из-за ошибки "лист с таким именем уже существует"?
  • 27 мая 2024 г. 9:01
Ответы на вопрос 2
Для обработки ошибки при создании копии списка можно использовать конструкцию try-except. 

Вот пример кода, который позволит пропустить имена листов, которые уже существуют в документе:

```python
import openpyxl

# Открытие документа
wb = openpyxl.load_workbook('example.xlsx')

# Список имен для создания листов
names = ['Sheet1', 'Sheet2', 'Sheet3', 'Sheet4']

# Перебор имен и попытка создания листа
for name in names:
    try:
        new_sheet = wb.copy_worksheet(wb.active)
        new_sheet.title = name
    except ValueError:
        pass

# Сохранение изменений
wb.save('example_modified.xlsx')
```

В данном случае, если лист с именем уже существует, будет возбуждено исключение типа `ValueError`, но благодаря конструкции `try-except` процесс выполнения скрипта не будет прерван, а просто пропустит то имя, которое уже занято.
Вам нужно проверить, есть ли такой лист перед установкой имени 

Добавить со случайным именем:

const nameTo = ss.getSheetByName(name) ? `${name}_${new Date().getTime()}` :  name;
sheetTemp.setName(nameTo);


Удалить перед вставкой нового:

if(ss.getSheetByName(name)) {
  ss.deleteSheet(name);
}


Просто пропустить, ничего не делать:

if(!ss.getSheetByName(name)) {
  sheetTemp.setName(name);
}
Похожие вопросы