Загрузка данных


from openpyxl import load_workbook
from openpyxl.styles import Font

# ---------------- НАСТРОЙКИ ----------------

excel_file = "input.xlsx"

source_sheet_name = "Названия"      # Лист, где лежат названия
template_sheet_name = "Шаблон"      # Лист-шаблон

start_row = 2                       # С какой строки брать названия
name_column = 1                     # Столбец A

output_file = "output.xlsx"

# ------------------------------------------

wb = load_workbook(excel_file)

source_sheet = wb[source_sheet_name]
template_sheet = wb[template_sheet_name]

for row in range(start_row, source_sheet.max_row + 1):
    value = source_sheet.cell(row=row, column=name_column).value

    if value is None:
        continue

    sheet_name = str(value).strip()

    if not sheet_name:
        continue

    # Excel не разрешает некоторые символы
    for ch in r'[]:*?/\\':
        sheet_name = sheet_name.replace(ch, "_")

    sheet_name = sheet_name[:31]  # Максимум 31 символ

    # Если лист уже существует
    original = sheet_name
    i = 1
    while sheet_name in wb.sheetnames:
        sheet_name = f"{original[:28]}_{i}"
        i += 1

    # Копируем шаблон
    new_sheet = wb.copy_worksheet(template_sheet)
    new_sheet.title = sheet_name

    # Если A1:J1 не объединены, можно раскомментировать:
    # new_sheet.merge_cells("A1:J1")

    cell = new_sheet["A1"]
    cell.value = value

    cell.font = Font(
        name="Arimo",
        size=48,
        bold=True,
        color="FF0000"
    )

wb.save(output_file)

print("Готово!")