Содержание
Excel — главный инструмент работы с данными в российском бизнесе. Менеджеры тратят часы на копирование данных, аналитики — на обновление отчётов вручную. Python автоматизирует всё это за минуты.
1. Зачем автоматизировать Excel
Типичные задачи которые теряют часы каждую неделю:
- Обновление сводного отчёта из нескольких источников
- Объединение данных из десятков файлов в один
- Форматирование и подготовка отчёта для руководства
- Фильтрация, сортировка и дедупликация больших таблиц
- Рассылка персонализированных Excel-файлов клиентам
Считаем экономию: если аналитик тратит 2 часа в день на Excel при зарплате 70 000 ₽/мес — это 18 750 ₽ ежемесячно только на рутину. Python-скрипт окупается за 1–2 недели.
2. Чтение и обработка с pandas
pandas — главная библиотека для работы с табличными данными. Читает Excel, CSV, JSON и базы данных в единый формат DataFrame.
# pip install pandas openpyxl import pandas as pd # Чтение Excel-файла df = pd.read_excel('sales.xlsx', sheet_name='Январь') print(df.head()) # первые 5 строк print(df.shape) # (строк, столбцов) print(df.describe()) # статистика по числовым столбцам # Фильтрация big_orders = df[df['Сумма'] > 100000] # Группировка и агрегация by_manager = df.groupby('Менеджер')['Сумма'].agg(['sum', 'count', 'mean']) # Объединение нескольких файлов import glob files = glob.glob('reports/*.xlsx') combined = pd.concat([pd.read_excel(f) for f in files]) # Сохранение результата by_manager.to_excel('summary.xlsx')
3. Создание файлов с openpyxl
openpyxl даёт полный контроль над Excel-файлом: форматирование, формулы, изображения, именованные диапазоны.
from openpyxl import Workbook from openpyxl.utils import get_column_letter wb = Workbook() ws = wb.active ws.title = 'Отчёт по продажам' # Заголовки headers = ['Менеджер', 'Заказов', 'Выручка', 'Средний чек'] ws.append(headers) # Данные data = [ ['Иванов И.', 47, 2350000, 50000], ['Петрова А.', 63, 3150000, 50000], ['Сидоров К.', 38, 1520000, 40000], ] for row in data: ws.append(row) # Формула итогов ws['B5'] = '=SUM(B2:B4)' ws['C5'] = '=SUM(C2:C4)' # Ширина столбцов for i, col in enumerate(headers, 1): ws.column_dimensions[get_column_letter(i)].width = 20 wb.save('report.xlsx')
4. Форматирование и стили
from openpyxl.styles import Font, PatternFill, Alignment, Border, Side from openpyxl.styles.numbers import FORMAT_NUMBER_COMMA_SEPARATED1 # Жирный заголовок с фоном header_font = Font(bold=True, color='FFFFFF', size=11) header_fill = PatternFill(fill_type='solid', fgColor='3051B4') for cell in ws[1]: # первая строка cell.font = header_font cell.fill = header_fill cell.alignment = Alignment(horizontal='center') # Формат числа с разрядами for row in ws.iter_rows(min_row=2, min_col=3, max_col=4): for cell in row: cell.number_format = '# ##0 ₽' # Чередование строк for i, row in enumerate(ws.iter_rows(min_row=2), 2): if i % 2 == 0: for cell in row: cell.fill = PatternFill(fill_type='solid', fgColor='EEF2FF')
5. Графики в Excel
from openpyxl.chart import BarChart, Reference chart = BarChart() chart.title = 'Выручка по менеджерам' chart.style = 10 chart.y_axis.title = 'Выручка, ₽' chart.x_axis.title = 'Менеджер' # Данные для графика (столбец C — выручка) data = Reference(ws, min_col=3, min_row=1, max_row=4) cats = Reference(ws, min_col=1, min_row=2, max_row=4) chart.add_data(data, titles_from_data=True) chart.set_categories(cats) chart.shape = 4 # Вставляем график на лист ws.add_chart(chart, 'F2') wb.save('report_with_chart.xlsx')
6. Автоматический запуск каждое утро
# cron — запуск ежедневно в 8:00 # crontab -e 0 8 * * * /usr/bin/python3 /home/app/excel_report.py >> /var/log/report.log 2>&1 # Или через schedule в Python import schedule, time def generate_report(): # ваш код генерации отчёта print('Отчёт сформирован') schedule.every().day.at('08:00').do(generate_report) while True: schedule.run_pending() time.sleep(60)
Нужна автоматизация Excel под ключ?
Разработаем скрипт который автоматически формирует нужные вам Excel-отчёты. От 15 000 ₽, срок от 3 дней.
Узнать стоимость