Найти в Дзене
Анастасия Софт

📑 Как использовать Python для создания и форматирования Excel-шаблонов

Когда тебе говорят "Excel-шаблон", ты, возможно, представляешь: Сценарий знаком? Значит, пора познакомиться с Python и openpyxl, который научит Excel делать шаблоны красиво, по правилам и... автоматически. pip install openpyxl from openpyxl import Workbook
# Создаем книгу (workbook)
wb = Workbook()
# Активный лист (по умолчанию)
ws = wb.active
# Переименуем лист
ws.title = "Отчет" 📝 Комментарий:
Excel-файл — это Workbook, а лист — Worksheet. Мы сразу переименовываем лист, потому что “Лист1” звучит как “Я забыл сделать красиво”. # Заголовок документа
ws.merge_cells('A1:E1') # Объединяем ячейки под заголовок
ws['A1'] = "Отчет о продажах за месяц" 📝 Комментарий:
В Excel, как и в жизни, важен заголовок. Мы делаем его на весь верх и вставляем текст. Теперь добавим заголовки колонок: headers = ["№", "Менеджер", "Регион", "Сумма продаж", "Дата"]
ws.append(headers) 📝 Комментарий:
ws.append() добавляет строку в конец таблицы. Удобно, просто, душевно. from openpyxl.styles import Font,
Оглавление
Как использовать Python для создания и форматирования Excel-шаблонов
Как использовать Python для создания и форматирования Excel-шаблонов

🧃 Введение

Когда тебе говорят "Excel-шаблон", ты, возможно, представляешь:

  • 18 вкладок, каждая со своей болью,
  • ручной копипаст каждую пятницу,
  • и стиль “Arial 10, жирный, центр, но почему у всех всё по-разному?!”

Сценарий знаком? Значит, пора познакомиться с Python и openpyxl, который научит Excel делать шаблоны красиво, по правилам и... автоматически.

🛠 Что мы сделаем

  • Создадим Excel-файл с нуля
  • Добавим заголовки, подзаголовки, табличные данные
  • Применим стили: шрифты, заливки, выравнивания
  • Создадим шаблон, который можно переиспользовать
  • Сделаем так, чтобы и новичок понял, и профи не заскучал

📦 Устанавливаем всё, что нужно

pip install openpyxl

📘 Шаг 1: Создаем новый Excel-файл

from openpyxl import Workbook

# Создаем книгу (workbook)
wb = Workbook()

# Активный лист (по умолчанию)
ws = wb.active

# Переименуем лист
ws.title = "Отчет"

📝 Комментарий:

Excel-файл — это Workbook, а лист — Worksheet. Мы сразу переименовываем лист, потому что “Лист1” звучит как “Я забыл сделать красиво”.

🖋️ Шаг 2: Заголовок и структура таблицы

# Заголовок документа
ws.merge_cells('A1:E1') # Объединяем ячейки под заголовок
ws['A1'] = "Отчет о продажах за месяц"

📝 Комментарий:

В Excel, как и в жизни, важен заголовок. Мы делаем его на весь верх и вставляем текст.

Теперь добавим заголовки колонок:

headers = ["№", "Менеджер", "Регион", "Сумма продаж", "Дата"]
ws.append(headers)

📝 Комментарий:

ws.append() добавляет строку в конец таблицы. Удобно, просто, душевно.

💅 Шаг 3: Применяем стили

from openpyxl.styles import Font, Alignment, PatternFill

# Шрифт для заголовка
header_font = Font(size=14, bold=True)
ws['A1'].font = header_font
ws['A1'].alignment = Alignment(horizontal='center')

# Стили для заголовков колонок
header_fill = PatternFill("solid", fgColor="B7DEE8")
for col in "ABCDE":
cell = f"{col}2"
ws[cell].font = Font(bold=True)
ws[cell].alignment = Alignment(horizontal='center')
ws[cell].fill = header_fill

📝 Комментарий:

  • Font — для шрифтов
  • Alignment — выравнивание
  • PatternFill — заливка ячейки

Теперь заголовок будет жирным, посередине и с легкой голубизной — не безвкусной, а профессиональной.

📊 Шаг 4: Заполняем шаблон данными

Допустим, мы делаем шаблон для автоматической генерации отчета, и на этом этапе просто вставляем примерные данные.

import datetime

data = [
[1, "Анна", "Москва", 150000, datetime.date(2025, 4, 1)],
[2, "Борис", "Санкт-Петербург", 120000, datetime.date(2025, 4, 2)],
[3, "Виктор", "Новосибирск", 170000, datetime.date(2025, 4, 3)],
]

for row in data:
ws.append(row)

📝 Комментарий:

В будущем ты можешь подставлять сюда любые данные: из базы данных, API или CSV. Главное — структура.

📐 Шаг 5: Автовыравнивание ширины колонок

from openpyxl.utils import get_column_letter

for col in ws.columns:
max_length = 0
col_letter = get_column_letter(col[0].column)
for cell in col:
try:
if cell.value:
max_length = max(max_length, len(str(cell.value)))
except:
pass
ws.column_dimensions[col_letter].width = max_length + 2

📝 Комментарий:

В Excel нет автоматического автоподбора ширины. Но мы люди умные — считаем длину каждого значения и выставляем ширину сами.

🎨 Бонус: Чередующиеся строки

fill_alt = PatternFill("solid", fgColor="F2F2F2")

for i, row in enumerate(ws.iter_rows(min_row=3, max_row=5), start=1):
if i % 2 == 0:
for cell in row:
cell.fill = fill_alt

📝 Комментарий:

Чередуем цвета строк, чтобы глаз не ломался. Работает как зебра: удобно и красиво.

💾 Финал: сохраняем шаблон

wb.save("шаблон_отчета.xlsx")
print("Файл сохранен как шаблон_отчета.xlsx")

📦 Как использовать этот шаблон дальше?

Подходит для:

  • Автоматической генерации отчетов по продажам
  • Финансовых сводок
  • Форм для заполнения
  • Еженедельных или ежедневных шаблонов

Идея:

Ты можешь заранее создавать файл с заголовками, форматированием, логикой, а потом просто вставлять данные и сохранять под новым именем. Настоящая автоматизация.

💡 Профессиональные штучки:

Если ты опытный товарищ, тебе может быть интересно:

  • Добавить в шаблон формулы =SUM(...), =IF(...)
  • Добавить в шаблон выпадающие списки (data validation)
  • Привязать шаблон к API — например, тянуть отчеты с сервера каждую ночь
  • Добавить графики через openpyxl.chart

Хочешь — расскажу об этом подробнее в следующей части 😉

✅ Что мы узнали?

  • Как создавать Excel с нуля в Python
  • Как красиво форматировать заголовки и таблицу
  • Как делать шаблоны, чтобы больше никогда не собирать их вручную
  • Как придавать автоматизации немного эстетики

🔚 Финальное слово

Создание Excel-шаблонов через Python — это не просто "удобно". Это "почему я не начал делать это раньше?!"

И помни: каждый раз, когда ты вручную выделяешь жирным 50 заголовков в Excel, где-то один Python-скрипт проливает электронную слезу 😢