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

🚀 Как автоматизировать работу с Excel с помощью Python и библиотеки openpyxl: живой гайд с примерами

Работать с Excel руками — это почти как мыть посуду: вроде и просто, но хочется автоматизировать. Если вы каждый день открываете .xlsx-файлы, копируете данные, обновляете таблицы и добавляете новые строки — поздравляю, у вас есть отличный повод научиться использовать Python и библиотеку openpyxl. Сегодня мы научимся: Готовы? Погнали! Сначала установим библиотеку. Открываем терминал и пишем: pip install openpyxl Если всё прошло гладко, вы уже на шаг ближе к Excel-мастерству. Задача: допустим, у нас есть таблица "отчет по продажам", и мы хотим посчитать общее количество проданных товаров. from openpyxl import load_workbook
# Загружаем наш Excel-файл
wb = load_workbook('sales_report.xlsx')
# Выбираем активный лист (обычно первый в файле)
sheet = wb.active
# Инициализируем переменную для подсчета
total_sold = 0
# Начинаем с 2-й строки (первая — заголовки)
for row in sheet.iter_rows(min_row=2, values_only=True):
total_sold += row[2] # допустим, в третьем столбце — количество
print
Оглавление
Как автоматизировать работу с Excel с помощью Python и библиотеки openpyxl: живой гайд с примерами
Как автоматизировать работу с Excel с помощью Python и библиотеки openpyxl: живой гайд с примерами

Работать с Excel руками — это почти как мыть посуду: вроде и просто, но хочется автоматизировать. Если вы каждый день открываете .xlsx-файлы, копируете данные, обновляете таблицы и добавляете новые строки — поздравляю, у вас есть отличный повод научиться использовать Python и библиотеку openpyxl.

Сегодня мы научимся:

  • 📂 Открывать и читать Excel-файлы;
  • ✍️ Редактировать и сохранять таблицы;
  • 📊 Добавлять формулы и стили;
  • 🧠 Решать реальные задачи (и немного флексить).

Готовы? Погнали!

🔧 Установка openpyxl

Сначала установим библиотеку. Открываем терминал и пишем:

pip install openpyxl

Если всё прошло гладко, вы уже на шаг ближе к Excel-мастерству.

📘 Пример 1: Открытие и чтение Excel-файла

Задача: допустим, у нас есть таблица "отчет по продажам", и мы хотим посчитать общее количество проданных товаров.

from openpyxl import load_workbook

# Загружаем наш Excel-файл
wb = load_workbook('sales_report.xlsx')

# Выбираем активный лист (обычно первый в файле)
sheet = wb.active

# Инициализируем переменную для подсчета
total_sold = 0

# Начинаем с 2-й строки (первая — заголовки)
for row in sheet.iter_rows(min_row=2, values_only=True):
total_sold += row[2] # допустим, в третьем столбце — количество

print(f"Всего продано: {total_sold} товаров")

🔍 Комментарии:

  • load_workbook — открывает Excel-файл.
  • sheet.iter_rows — итерирует строки.
  • values_only=True — мы не хотим ячейки, только значения.
  • row[2] — третий столбец (индексация с 0).

📝 Пример 2: Создание нового Excel-файла и запись данных

Задача: создадим новый файл с итогами для команды.

from openpyxl import Workbook

# Создаем новый файл
wb = Workbook()

# Получаем активный лист
sheet = wb.active

# Заголовки
sheet.append(["Имя", "Продажи", "Бонус"])

# Примерные данные
sales_data = [
("Андрей", 12000),
("Оля", 18000),
("Дима", 9000),
]

# Расчет бонуса 10%
for name, sales in sales_data:
bonus = sales * 0.1
sheet.append([name, sales, bonus])

# Сохраняем файл
wb.save("team_bonus.xlsx")

🧠 Лайфхак: sheet.append() добавляет строку к таблице — удобно и быстро.

🧮 Пример 3: Добавляем формулы и стили

Задача: автоматизируем Excel-файл, чтобы Excel сам считал суммы и выглядел красиво.

from openpyxl.styles import Font
from openpyxl.utils import get_column_letter

# Создаем файл
wb = Workbook()
sheet = wb.active

# Данные
sheet.append(["Товар", "Цена", "Количество", "Итого"])

items = [
("Книга", 500, 3),
("Ручка", 50, 10),
("Тетрадь", 100, 5),
]

# Добавим строки и формулы
for i, (name, price, qty) in enumerate(items, start=2):
sheet[f"A{i}"] = name
sheet[f"B{i}"] = price
sheet[f"C{i}"] = qty
# Формула в Excel-стиле
sheet[f"D{i}"] = f"=B{i}*C{i}"

# Добавим жирный шрифт к заголовкам
for col in range(1, 5):
cell = sheet[f"{get_column_letter(col)}1"]
cell.font = Font(bold=True)

# Сохраняем
wb.save("shop_report.xlsx")

✨ Результат — Excel-файл с формулами и жирными заголовками. Красота!

🧩 Пример 4: Реальная задача — сравнение двух Excel-файлов

Задача: у нас есть два прайс-листа от поставщика за разные месяцы. Нужно найти, какие цены изменились.

# Загрузим два файла
wb1 = load_workbook("prices_march.xlsx")
wb2 = load_workbook("prices_april.xlsx")

sheet1 = wb1.active
sheet2 = wb2.active

# Предположим: A — товар, B — цена
changes = []

for row1, row2 in zip(sheet1.iter_rows(min_row=2, values_only=True),
sheet2.iter_rows(min_row=2, values_only=True)):
product1, price1 = row1
product2, price2 = row2

if price1 != price2:
changes.append((product1, price1, price2))

# Выводим результат
print("Изменившиеся товары:")
for product, old, new in changes:
print(f"{product}: было {old}, стало {new}")

📎 Полезно, если работаете в отделе закупок или логистики — можно отслеживать изменения поставщика.

🔄 Ещё парочка полезных трюков

1. Объединение ячеек:

sheet.merge_cells("A1:D1")
sheet["A1"] = "Сводная таблица"

2. Заморозить панель:

sheet.freeze_panes = "A2"

3. Установка ширины колонок:

sheet.column_dimensions["A"].width = 20

🤖 Кому и зачем это нужно?

  • Бухгалтерам — автоматизировать сводки и бонусы;
  • Менеджерам — собирать отчеты без ручного труда;
  • Аналитикам — выгружать и обрабатывать данные из Excel;
  • Разработчикам — делать отчеты прямо из кода.

🧼 Заключение

openpyxl — это универсальный инструмент, который поможет вам сэкономить часы, а то и дни рутины в Excel. Он простой, понятный и очень гибкий.

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

Если хотите — помогу дописать скрипт под вашу задачу или даже сделать парсинг из Excel в базу данных. Дайте знать 😉

Надеюсь, статья была полезной. Если понравилось — кидайте другу-бухгалтеру. Ему понравится 💼📊

📊 Продолжение: Автоматизация Excel с Python — графики, сводные таблицы и запуск по времени