0Pricing
Python Academy · Урок

Пакетная обработка отчётов

Автоматически создавайте отчёты

«Пакетная обработка отчётов» — бесплатный урок Python Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Python Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Python Academy содержит 4 уроков всего.

Автоматизация повторяющихся отчётов

Главное преимущество openpyxl — автоматизация: создание десятков похожих отчётов без ручной работы. Например, можно формировать ежемесячные листы продаж для каждого региона или отдельный файл со сводкой для каждого клиента.

Шаблон таков: переберите группы данных, создайте для каждой книги и сохраните её под уникальным именем.

Группировка данных

Пакетная подготовка отчётов начинается с группировки записей, например по регионам. Обычные средства Python позволяют аккуратно выполнить это до начала работы с Excel.

records = [
    {'region': 'North', 'sales': 100},
    {'region': 'South', 'sales': 80},
    {'region': 'North', 'sales': 120},
]
groups = {}
for r in records:
    groups.setdefault(r['region'], []).append(r['sales'])
for region, sales in groups.items():
    print(region, sales, 'total', sum(sales))

Отдельный файл для каждой группы

Для каждой группы создайте книгу, запишите строки и сохраните её под именем, полученным из ключа группы. Тело цикла содержит тот же код, который вы написали для одного отчёта, только выполняется повторно.

Безопасные имена файлов

Ключи групп могут содержать символы, недопустимые в именах файлов. Сначала очистите их, чтобы сохранение не завершилось ошибкой. Это та же идея преобразования в безопасное имя, которая используется в других местах.

import re
name = 'North/West Region 2024'
safe = re.sub(r'[^A-Za-z0-9]+', '_', name).strip('_')
print('report_' + safe + '.xlsx')

Повторно используемая функция-шаблон

Вынесите структуру отчёта в одну функцию, которая принимает данные и возвращает книгу. Её вызов в цикле сохраняет единообразие всех отчётов и делает код DRY (не повторяйте себя).

Функция должна установить заголовки, записать строки, добавить итоги и стили, а затем вернуть wb.

Добавление строки итогов

Большинство отчётов заканчивается итогами. Вычислите агрегированные значения в Python или с помощью формулы Excel и запишите их в последнюю строку. Здесь мы вычисляем итоговые значения.

sales = [100, 120, 90, 110]
summary = {
    'count': len(sales),
    'total': sum(sales),
    'average': sum(sales) / len(sales),
    'max': max(sales),
}
for k, v in summary.items():
    print(k.ljust(8), v)

Несколько листов в одном файле

Иногда один файл с отдельной вкладкой для каждой группы лучше, чем множество файлов. Переберите группы в цикле и вызовите wb.create_sheet(title=group_name), записывая каждую группу на собственную вкладку. Сохраните файл один раз в конце.

Организация папок с результатами

Сохраняйте отчёты в папке результатов с датой, чтобы разные запуски не перезаписывали друг друга. Используйте os.makedirs(path, exist_ok=True), чтобы безопасно создать её, а затем добавляйте к этому пути имена файлов.

import os
base = 'reports'
run_date = '2026-05-30'
out_dir = os.path.join(base, run_date)
path = os.path.join(out_dir, 'north.xlsx')
print('Would create dir:', out_dir)
print('File path:', path)

Обработка ошибок при пакетной обработке

При длительной пакетной обработке одна некорректная группа не должна останавливать остальные. Оберните обработку каждого отчёта в обработчик исключений, запишите сбой в журнал и продолжите работу. Частичный завершившийся запуск лучше полного запуска, аварийно остановившегося на полпути.

Планирование задания

Когда скрипт заработает, запланируйте его запуск (с помощью cron, планировщика заданий или задания непрерывной интеграции) каждую ночь или каждый месяц. После этого тот же код будет автоматически создавать свежие отчёты без участия человека.

Регистрация хода выполнения

Для длительной пакетной обработки полезно выводить сведения о ходе выполнения. Выводите или записывайте в журнал информацию о том, какая группа обрабатывается и сколько групп осталось, чтобы отличить медленный запуск от зависшего. Достаточно простого счётчика относительно общего количества.

Журнал также сохраняет сведения об успешно созданных отчётах, если понадобится повторно обработать только неудачные.

Быстрая проверка

Проверьте свои знания об автоматизации пакетной обработки.

Итоги

Теперь вы умеете автоматизировать создание отчётов:

  • Сгруппировать данные, а затем в цикле создать одну книгу (или один лист) для каждой группы
  • Вынести оформление в универсальную функцию-шаблон
  • Очищать имена файлов и сохранять файлы в папках результатов с датой
  • Добавлять строки итогов, обрабатывать каждый отчёт с помощью обработчика исключений и планировать запуск скрипта

Так часы ручной работы с электронными таблицами превращаются в задание, запускаемое одной командой.

Часто задаваемые вопросы

Урок «Пакетная обработка отчётов» бесплатный?

Да — полный текст урока «Пакетная обработка отчётов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Python Academy, подпишись на CoddyKit PRO. Курс Python Academy содержит 4 уроков всего.

Чему я научусь в уроке «Пакетная обработка отчётов»?

Автоматически создавайте отчёты Ты практикуешь Python Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Python Academy?

Предыдущий опыт не требуется. Python Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Пакетная обработка отчётов»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Python Academy?

Да. Каждый урок Python Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Чтение книг
  2. Запись и оформление ячеек
  3. Формулы и диаграммы
  4. Пакетная обработка отчётов
← Назад к Python Academy