openpyxl — библиотека для работы с Excel¶
openpyxl — это открытая кроссплатформенная библиотека на языке Python, предназначенная для чтения, записи и модификации файлов электронных таблиц в формате Office Open XML, преимущественно файлов с расширением .xlsx, создаваемых приложениями Microsoft Excel 2007 и более новыми версиями. Библиотека позволяет автоматизировать создание и обработку табличных документов, управлять форматированием ячеек, стилями, диаграммами и формулами, не требуя установки офисного пакета на компьютере пользователя.
¶История и происхождение
Проект openpyxl был создан Эриком Гарбэром как альтернатива более ранним и менее функциональным решениям для работы с Excel-файлами в Python, таким как библиотека xlrd и xlwt, которые поддерживали только устаревший бинарный формат .xls. Разработка началась в 2010 году. Первоначально библиотека поддерживала лишь базовые операции чтения, однако со временем функциональность была значительно расширена. Название происходит от комбинации слов «open» (открытый) и «pyxl» (сокращение от Python + Excel).
Стандарт Office Open XML был принят Международной организацией по стандартизации (ISO/IEC 29500) в 2008 году, что сделало формат .xlsx открытым и доступным для реализации сторонними разработчиками. openpyxl стала одной из самых популярных библиотек для работы с этим форматом в экосистеме Python, наряду с такими инструментами, как pandas (через интеграцию) и xlsxwriter. Актуальные версии библиотеки распространяются под лицензией MIT, что допускает свободное использование в коммерческих и закрытых проектах.
¶Установка и базовые принципы
Установка openpyxl выполняется стандартным менеджером пакетов pip:
`` pip install openpyxl ``
Библиотека не имеет обязательных внешних зависимостей, что упрощает её развёртывание в изолированных средах и на серверах. Для работы с изображениями и некоторыми расширенными функциями могут потребоваться дополнительные пакеты, такие как Pillow.
Основными абстракциями библиотеки являются три класса: Workbook (представляет весь файл), Worksheet (отдельный лист внутри книги) и Cell (ячейка на пересечении строки и столбца). Работа с документом начинается либо с создания нового экземпляра Workbook(), либо с загрузки существующего файла через функцию load_workbook(). После завершения операций изменения сохраняются методом save().
¶Основные возможности
¶Чтение данных
openpyxl позволяет извлекать данные из существующих файлов .xlsx. Доступ к конкретной ячейке осуществляется по её координатам, например, sheet['A1'] или через метод cell(row=1, column=1). Библиотека корректно обрабатывает значения различных типов: числа, строки, даты, логические значения и пустые ячейки. Также поддерживается чтение объединённых ячеек, примечаний и гиперссылок.
¶Запись и создание файлов
Создание нового документа включает добавление листов (create_sheet()), запись значений в ячейки и последующее сохранение. Библиотека автоматически определяет тип данных при присваивании значения ячейке. Поддерживается запись формул (например, =SUM(A1:A10)), однако вычисление их результатов самой библиотекой не выполняется — значения формул пересчитываются только при открытии файла в Excel или другом табличном процессоре.
¶Форматирование и стили
Значительная часть функциональности openpyxl посвящена управлению внешним видом таблиц. Доступны следующие возможности:
- настройка шрифтов (гарнитура, размер, начертание, цвет);
- заливка фона ячеек;
- установка границ и рамок;
- выравнивание текста (горизонтальное и вертикальное);
- числовые форматы (проценты, денежные единицы, даты);
- условное форматирование;
- управление шириной столбцов и высотой строк;
- скрытие и группировка строк или столбцов.
Стили применяются как к отдельным ячейкам, так и к целым диапазонам. Именованные стили позволяют переиспользовать наборы параметров.
¶Диаграммы и графики
openpyxl включает модуль для создания различных типов диаграмм: столбчатых, линейных, круговых, точечных и других. Диаграммы создаются на основе данных, расположенных на листе, и встраиваются в документ. После сохранения файла диаграммы отображаются в Excel в редактируемом виде.
¶Работа с несколькими листами
Библиотека поддерживает создание, удаление, переименование, копирование и перемещение листов внутри книги. Доступны операции по работе с активным листом и управлению порядком следования листов.
¶Пример использования
Ниже приведён простой пример создания файла с данными и форматированием:
```python from openpyxl import Workbook from openpyxl.styles import Font
wb = Workbook() ws = wb.active ws.title = "Отчёт"
headers = ["Наименование", "Количество", "Цена"] ws.append(headers)
for cell in ws[1]: cell.font = Font(bold=True)
data = [ ("Товар А", 10, 150.5), ("Товар Б", 5, 89.9), ] for row in data: ws.append(row)
ws["D1"] = "Итого" ws["D2"] = "=B2C2" ws["D3"] = "=B3C3"
wb.save("report.xlsx") ```
¶Ограничения и особенности
Библиотека не поддерживает устаревший формат .xls — для работы с ним потребуется использование других инструментов, например xlrd. Также openpyxl не выполняет пересчёт формул и не сохраняет некоторые макросы и элементы VBA при перезаписи файлов, созданных в Excel. При работе с очень большими файлами (сотни тысяч строк) производительность может снижаться, однако для оптимизации в таких случаях предусмотрен режим только для чтения (read_only=True), который позволяет обрабатывать данные потоково.
¶Применение
openpyxl широко используется в автоматизации бизнес-процессов: генерация отчётов, обработка выгрузок из бухгалтерских систем, подготовка документов для импорта в корпоративные информационные системы. Библиотека востребована в сферах финансового анализа, логистики, управления персоналом и аналитики данных. Совместно с фреймворками автоматизации тестирования она применяется для создания и проверки тестовых данных в табличном виде. В научной среде openpyxl используется для оформления результатов экспериментов и статистических расчётов в виде структурированных таблиц.