Ping Win
Назад к блогу

Автоматизация отчетов и таблиц на Python - как сэкономить часы ручной работы

Практическое руководство по автоматизации рутинных операций с помощью Python - генерация отчетов, обработка таблиц Excel, работа с базами данных. Примеры для бизнеса в Казахстане.

Введение

Каждый день бизнес сталкивается с десятками рутинных задач: формирование отчетов, обработка таблиц, рассылка писем. Ручное выполнение отнимает часы, а риск ошибки растет. Python — идеальный инструмент для автоматизации: простой, мощный и с огромной экосистемой библиотек. В этой статье разберем реальные сценарии для казахстанского бизнеса.

1. Автоматизация отчетов с помощью pandas и openpyxl

Библиотека pandas позволяет читать, обрабатывать и записывать данные в форматах Excel, CSV, JSON. Для создания форматированных Excel-отчетов используйте openpyxl.

Пример: еженедельный отчет по продажам

```python import pandas as pd from openpyxl import Workbook from openpyxl.styles import Font, PatternFill

Чтение данных из CSV

Группировка по категориям

Создание Excel-файла

Заголовки

Данные

wb.save('sales_report.xlsx') ```

Совет: Для бизнеса в Казахстане часто требуется отчетность в тенге. Убедитесь, что числовые поля форматируются с разделителями разрядов (например, через `num_format`).

2. Работа с таблицами: объединение, очистка и проверка

Часто данные разбросаны по множеству файлов: отчеты филиалов, выгрузки из 1С, Excel-таблицы от бухгалтерии. Python автоматизирует сборку и очистку.

Объединение нескольких Excel-файлов

```python import glob import pandas as pd

files = glob.glob('data/*.xlsx') df_list = [pd.read_excel(f) for f in files] combined = pd.concat(df_list, ignore_index=True) combined.to_excel('combined_data.xlsx', index=False) ```

Проверка дубликатов и пропусков: - `df.drop_duplicates()` — удаление дублей. - `df.fillna(0)` — заполнение пустых ячеек нулями. - `df['column'].str.strip()` — очистка от лишних пробелов.

Для казахстанского бизнеса: часто встречаются названия компаний с разными вариантами написания (ТОО, ИП, крестьянское хозяйство). Используйте регулярные выражения для нормализации.

3. Генерация PDF-отчетов с помощью ReportLab

Бумажные отчеты и счета-фактуры до сих пор востребованы. Python-библиотека ReportLab создает PDF-документы с нуля.

Простой пример: счет на оплату

```python from reportlab.lib.pagesizes import A4 from reportlab.pdfgen import canvas

c = canvas.Canvas('invoice.pdf', pagesize=A4) c.drawString(100, 800, 'Счет №123 от 23.07.2026') c.drawString(100, 780, 'Поставщик: ТОО "Пример"') c.drawString(100, 760, 'Покупатель: ИП Иванов') c.drawString(100, 720, 'Наименование товара: Консультационные услуги') c.drawString(100, 700, 'Сумма: 150 000 тенге') c.save() ```

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

4. Автоматическая рассылка отчетов по email

Сформированный отчет нужно отправить руководителю или клиенту. Используйте smtplib и email из стандартной библиотеки.

```python import smtplib from email.mime.multipart import MIMEMultipart from email.mime.base import MIMEBase from email import encoders

msg = MIMEMultipart() msg['From'] = 'admin@company.kz' msg['To'] = 'director@company.kz' msg['Subject'] = 'Еженедельный отчет'

with open('sales_report.xlsx', 'rb') as f: part = MIMEBase('application', 'octet-stream') part.set_payload(f.read()) encoders.encode_base64(part) part.add_header('Content-Disposition', 'attachment', filename='report.xlsx') msg.attach(part)

server = smtplib.SMTP('smtp.yandex.ru', 587) server.starttls() server.login('admin@company.kz', 'password') server.send_message(msg) server.quit() ```

Важно: Для казахстанских почтовых сервисов (например, mail.kz) используйте соответствующие SMTP-настройки.

5. Планировщик задач: cron и schedule

Чтобы скрипты выполнялись по расписанию, настройте cron в Linux или используйте библиотеку schedule.

Пример с schedule (запуск каждый понедельник в 9:00)

```python import schedule import time

def job(): # ваш код автоматизации print('Отчет сформирован')

schedule.every().monday.at('09:00').do(job)

while True: schedule.run_pending() time.sleep(60) ```

Для Windows используйте Планировщик задач, вызывающий Python-скрипт.

6. Интеграция с базами данных

Если данные хранятся в PostgreSQL, MySQL или SQLite, Python легко подключается и выгружает отчеты.

```python import sqlite3 import pandas as pd

conn = sqlite3.connect('company.db') df = pd.read_sql_query('SELECT * FROM sales WHERE date >= "2026-01-01"', conn) df.to_excel('sales_2026.xlsx', index=False) conn.close() ```

Для казахстанских компаний: часто используются 1С и ERP-системы. Python может напрямую подключаться к SQL-базам данных этих систем (при наличии доступа).

Заключение

Автоматизация на Python — реальный способ снизить нагрузку на сотрудников и исключить ошибки. Начните с малого: автоматизируйте один отчет, затем добавьте рассылку, затем — обработку входящих таблиц. Если вам нужна готовая система автоматизации под ключ, компания Ping Win разработает и внедрит решение с учетом специфики вашего бизнеса в Казахстане.