Введение
Каждый день бизнес сталкивается с десятками рутинных задач: формирование отчетов, обработка таблиц, рассылка писем. Ручное выполнение отнимает часы, а риск ошибки растет. 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 разработает и внедрит решение с учетом специфики вашего бизнеса в Казахстане.