Главная

Работа с Excel в Python: библиотека Openpyxl

В этой статье рассмотрим ключевые возможности библиотеки Python openpyxl и покажем, как применять этот инструмент для решения реальных рабочих задач.

Содержание

 

Во многих компаниях значительная часть рабочей рутины связана с Excel: собрать метрики, обновить ежемесячные отчеты, подготовить шаблоны для разных отделов. Задачи кажутся простыми, но отнимают много времени и требуют внимания к деталям. Любая ошибка в ячейке может привести к некорректной аналитике.

 

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

 

Что такое Openpyxl и когда ее использовать

Прежде чем углубиться в работу с Excel в Python, убедитесь, что знаете базу. Если вы только начинаете путь в программировании, обратите внимание на бесплатный курс «Основы Python». Он подходит всем, кто хочет применять этот язык в работе или учебе — достаточно лишь уверенно пользоваться компьютером. Здесь разбирают ключевые понятия, от переменных к функциям. Это фундамент, после которого легче переходить к более сложной информации.


Openpyxl — это открытая библиотека «Питона» для работы с Excel-файлами формата .xlsx. Она позволяет программно читать, изменять и создавать таблицы без необходимости открывать эксель вручную. Поддерживает как простые операции (изменение значений ячеек), так и продвинутые — стили, форматирование, фильтры, объединение ячеек, работу с формулами и создание графиков.

Ее используют для:

 

1. Работы с данными

  • Экспорт из Python в Excel
  • Импорт из Excel в Python
  • Преобразование форматов (CSV → Excel)

 

2. Проверки качества

  • Поиск ошибок в данных
  • Проверка шаблонов на соответствие стандартам

 

3. Создания отчетов

  • Генерация красивых таблиц с форматированием
  • Добавление формул и диаграмм
  • Создание многостраничных документов

 

4. Автоматизации рутины

  • Сбор данных из многих файлов
  • Создание отчетов по шаблону
  • Ежемесячное обновление таблиц

Openpyxl vs Pandas vs другие библиотеки

Когда речь заходит о том, как прочитать эксель-файл в «Питоне», возникает логичный вопрос — чем пользоваться?

 

Openpyxl подходит, если нужно взаимодействовать с файлом «как есть». Например:

 

  • заполнить шаблон отчета, куда руководитель уже добавил стили;
  • изменить пару значений в готовой таблице и сохранить форматирование;
  • обновить формулы или добавить фильтр.

 

То есть важно не только содержание, но и внешний вид.

 

Pandas — выбор для задач по анализу данных:

  • быстро отфильтровать 50 тысяч строк;
  • посчитать средние показатели по отделам;
  • объединить несколько таблиц в одну.

 

На выходе вы чаще всего получаете сырые данные, а не красиво оформленный файл. Эта библиотека читает и записывает таблицы, но не сохраняет цвета, границы и прочее оформление.

 

Xlsxwriter пригодится, когда нужно создать новый файл с нуля и сделать его максимально аккуратным. Например, если вы генерируете отчет автоматически каждое утро. Минус — библиотека не открывает существующие файлы, только создает новые.

 

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

Ключевые объекты Openpyxl

  • Workbook — книга Excel, весь файл целиком. Содержит листы, настройки и методы для сохранения.
  • Worksheet — отдельный лист внутри книги. Позволяет работать со строками, столбцами, диапазонами и структурой таблицы. 
  • Cell — ячейка. Основной строительный элемент: значение, формула, стиль, формат, комментарии.

Установка Openpyxl

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

Шаг 1. Подготовка

Откройте терминал или командную строку, в зависимости от вашей операционной системы.

 

  • Windows: нажмите Win → введите cmd → откройте Командную строку (или используйте PowerShell).
  • macOS: откройте Terminal (Spotlight → Terminal).
  • Linux: откройте терминал (Ctrl+Alt+T или через меню).

 

В каждом шаге ниже выполняйте команды в этом окне.

Шаг 2.  Установите Python 

Зайдите на официальный сайт и скачайте последнюю стабильную версию для вашей ОС.

 

Важно для Windows

При установке поставьте галочку Add Python to PATH.

 

После установки введите в терминале:



Вы должны увидеть версию, например Python 3.11.4. Если команда не найдена — вернитесь к установке и убедитесь, что галочка PATH поставлена.

Шаг 3. Проверьте pip

Менеджер пакетов pip — это инструмент, с помощью которого устанавливаются библиотеки (в том числе openpyxl).

 

Проверьте:

 

Если pip не найден, выполните:



А затем снова:



Совет

Если в системе есть и python, и python3, в командах ниже используйте ту форму, которая у вас работает.

 

Иногда команда pip не срабатывает, потому что система не знает, где она лежит. Это случается:

 

  • В Windows, если PATH настроен неправильно или pip не установился.
  • В macOS/Linux, если PATH не включает путь к pip.
  • Если установлено несколько версий Python, и одна мешает другой.

 

В таких случаях лучше использовать команду, привязанную к конкретной версии Python:

 

 

или в некоторых системах:

 


Шаг 4. Установите openpyxl

В терминале выполните одну из команд (ту, которая у вас работает):

 



Появятся строки загрузки и в конце — Successfully installed openpyxl…. Если требуется sudo на Linux/macOS:

Шаг 5. Сделайте быстрый тест

Создайте файл test_openpyxl.py с таким содержимым:



Запустите команду python test_openpyxl.py или python3 test_openpyxl.py.

В папке появится файл test.xlsx. Откройте — в ячейке A1 должно быть ok.

Шаг 6. Используйте виртуальную среду

Виртуальная среда — это «отдельная папка» с собственными библиотеками. Рекомендуется, если у вас много проектов и не хочется, чтобы они конфликтовали.

 

Создать и использовать:

 

 

После активации в командной строке обычно появляется префикс (myenv). Все, что вы установите в активной среде, не повлияет на другие проекты.

Полезно

  • Если python и pip ссылаются на разные версии — используйте python -m pip install ….
  • Если команда требует прав администратора — добавьте sudo на macOS/Linux или запустите терминал от имени администратора в Windows.
  • Если при активации PowerShell блокирует скрипты, откройте обычный cmd или временно разрешите выполнение.

Первые шаги: создание и загрузка файлов

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

Как создать новый Excel-файл

Это займет всего несколько строк.

 



После запуска скрипта рядом появится файл new_file.xlsx — полностью рабочий документ, который можно открыть в Excel.

Лайфхаки для начинающих

  • Всегда сохраняйте файл после всех изменений.

Библиотека openpyxl не сразу записывает изменения сразу, а только в момент save().
Если что-то пропало, значит, вы забыли сохранить.

  • Создавайте сразу структуру таблицы.

Если вы заранее знаете, какие вам нужны колонки, то заполняйте заголовки сразу:

ws.append([«Имя», «Продажи», «Премия»])

Этот метод добавляет строку целиком, что удобно.

  • Вы можете создавать несколько листов.

ws2 = wb.create_sheet(title=»Отчет_2″)

Полезно, когда формируете один файл с разными разделами.

  • Если код долго выполняется, не открывайте эксель-файл параллельно.

Excel может блокировать файл, и скрипт выдаст ошибку «Permission denied».

Как открыть существующий файл

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

 

 

  • load_workbook() загружает уже существующий файл.
  • wb.active — первый лист в книге (если лист не переименован).
  • .value — так читают значение из ячейки.

 

После изменений файл нужно обязательно пересохранить.

Лайфхак

При открытии больших отчетов добавьте параметр read_only=True:

wb = load_workbook(«big_file.xlsx», read_only=True)


Это ускорит загрузку и снизит расход памяти, но редактировать такой файл нельзя.

Работа с листами

В openpyxl лист — это объект Worksheet, и с ним можно делать практически все: создавать новые страницы, переименовывать существующие, перемещать, копировать и удалять. Ниже — основные операции, которые пригодятся в любой автоматизации.

Получить активный лист

ws = wb.active

Это первый лист, который видит Excel при открытии файла.

Получить лист по названию

ws = wb[«Отчет»]

Если название неизвестно, сначала посмотрите список: print(wb.sheetnames)

Создать новый лист

ws_new = wb.create_sheet(«Итоги»)


По умолчанию лист появляется в конце. Чтобы создать в начале:

wb.create_sheet(«Черновик», 0)

Переименовать лист

ws.title = «Данные_2025»

Удалить лист

del wb[«Черновик»]

или

wb.remove(ws)

Скопировать лист

Полезно при работе с шаблонами.

copy_ws = wb.copy_worksheet(ws)

copy_ws.title = «Отчет_копия»

 

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

Кроме того, нельзя копировать листы между разными книгами, а также в режиме только для чтения или записи.

Важно

  • Не используйте спецсимволы в названиях листов.

Excel запрещает :, *, ?, /, \, [, ]
Переименование с такими символами вызовет ошибку.

  • Учитывайте регистр и особенности букв при обращении к листам.

wb[«Отчет»] и wb[«Отчёт»] — разные вещи.

  • Максимальная длина названия листа — 31 символ.

Иначе Excel просто не откроет файл или обрежет название.

Чтение данных из ячеек

Этот базовый навык при работе с openpyxl. В реальных задачах это может быть проверка показателей в отчете, извлечение данных для аналитики, автоматизация сложных Excel-шаблонов или подготовка итоговых сводок.

Чтение конкретной ячейки

Если нужно получить значение из одной ячейки:

value = ws[«A1»].value

print(value)

 

.value — это свойство, которое возвращает реальное содержимое ячейки: текст, число, дату или формулу. Если в таблице много формул и вам нужны только результаты, используйте data_only=True при загрузке файла.

Чтение ячейки по координатам (строка или столбец)

Полезно, если адрес строится программно.

value = ws.cell(row=2, column=3).value  # C2

Чтение строки целиком

for cell in ws[1]:  # первая строка

    print(cell.value)

Удобно, если первая строка — заголовки.

Чтение столбца целиком

for cell in ws[«B»]:  # весь столбец B

    print(cell.value)

Используется, когда нужно обработать один параметр, например «Выручка».

Обратите внимание, эти способы читают все ячейки в строке или столбце, включая пустые, вплоть до максимально возможных границ листа. Например, до строки 1 048 576. Это может быть неэффективно для больших файлов.

Чтобы работать только с заполненной частью таблицы, лучше использовать ws.iter_rows() без указания границ или вместе с ws.dimensions.

Чтение диапазона

Позволяет работать с фрагментом таблицы.

for row in ws[«A1:C3»]:

    for cell in row:

        print(cell.value)

Представьте, что вы работаете аналитиком в компании, где каждый менеджер по продажам раз в неделю отправляет вам эксель-отчет. В каждом файле есть столбец с итоговой выручкой:

МенеджерНеделяВыручка
Иванов 3156000

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

Пример обработки одного файла:

 

 

Теперь вы можете запустить это в цикле по всем файлам, агрегировать данные и автоматически готовить сводный отчет. Без openpyxl такую работу пришлось бы выполнять вручную.

Полезно знать

  • Даты читаются как объекты datetime.
  • Пустые ячейки возвращают None.
  • Формулы возвращают сами себя.

Если файл был сохранен Excel и открыт с data_only=True, то в .value будет результат вычисления формулы на момент последнего сохранения.

Если файл создан openpyxl и в него записаны формулы, то при открытии с data_only=True вы, скорее всего, получите None, так как движок формул openpyxl их не вычисляет.

  • Большие таблицы — только через iter_rows().

Так вы не загрузите в память все сразу, что критично для файлов 50–200 МБ.

  • Старайтесь заранее знать границы таблицы.

Чтобы ускорить код, задавайте min_row, max_row, min_col, max_col.

Запись и изменение данных 

Это ключ к автоматизации любых рутинных процессов. Openpyxl делает работу с Excel удобной и гибкой: можно прописывать значения, формулы, делать массовые правки, добавлять строки, вставлять данные из Python-скриптов или внешних источников (API, базы данных, CRM).

Запись значения в ячейку

Самый простой способ:

ws[«A1»] = «Отчет за январь»

ws[«B2»] = 125000

Значение может быть числом, строкой, датой или даже формулой.

Запись через координаты (удобно при циклах)

ws.cell(row=5, column=3, value=4500)

Полезно, когда данные приходят в виде списка или словаря.

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

Если нужно расширить таблицу:

ws.append([«Иванов», «Продажи», 185000])

Команда ws.append() добавляет строку в первую пустую строку после имеющихся данных. Если у вас есть отступы или пустые строки внутри таблицы, это может сработать некорректно. Метод ищет самую нижнюю заполненную строку в столбце A (или в первом столбце, если A пуст) и добавляет данные ниже.

Добавление нескольких строк из списка

rows = [

    [«Петров», «Продажи», 192000],

    [«Сидорова», «Маркетинг», 118000]

]

 

for row in rows:

    ws.append(row)

Допустим, вы получили данные из CRM:

crm_data = [

    {«manager»: «Иванов», «revenue»: 150000},

    {«manager»: «Петров», «revenue»: 210000},

]

И хотите автоматически перенести их в шаблон Excel.

 

 

В итоге получаем готовый отчет без ручного копирования данных.

Изменение существующих данных

Если нужно скорректировать уже имеющиеся значения:

ws[«C5»] = ws[«C5»].value + 10000

 

Всегда проверяем, что значение не None и является числом!

Массовое изменение данных

for row in ws.iter_rows(min_row=2, max_col=3):

    if row[2].value < 100000:

        row[2].value = 100000  # минимальная планка

Вернемся к нашей воображаемой таблице менеджеров.

МенеджерВыручкаБонус
Иванов35000025000
Петров12000010000

Нужно повысить бонус тем, кто перевыполнил план (выше 300 000).

 

 

Подобный сценарий встречается повсеместно, от HR-отчетов до финансовых моделей.

Запись формул

ws[«D2»] = «=SUM(B2:C2)»

Excel пересчитает формулу при открытии файла.

Удаление данных

Очистить ячейку:

ws[«A5»].value = None

Удалить строку:

ws.delete_rows(3)

Удалить несколько строк:

ws.delete_rows(5, amount=3)

Важно

  • Если хотите избежать случайных правок — сохраняйте в новый файл.

wb.save(«sales_report_final.xlsx»)

  • Всегда проверяйте тип данных в ячейке (isinstance(value,(int, float))) перед арифметическими операциями, чтобы избежать ошибок.

Продвинутые техники работы с openpyxl

Менеджеры хотят получать не просто CSV с цифрами, а аккуратные таблицы, формулы, фильтры и графики. Продвинутые инструменты openpyxl позволяют собрать такие отчеты автоматически и под корпоративные стандарты.

 

Например, HR-отдел формирует данные по сотрудникам: библиотека помогает автоматически раскрасить KPI-показатели в зависимости от результатов, добавить формулы расчета бонусов и построить график эффективности по месяцам.

Работа со стилями и форматированием

Можно программно управлять практически каждым аспектом внешнего вида документа: шрифтами, выравниванием, цветами, границами, заливками, форматами чисел и структурой таблиц.

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

 

Openpyxl поддерживает:

 

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

Работа с формулами

Допустим, отдел продаж часто формирует еженедельный отчет по выручке. С помощью кода легко:

 

  • выгрузить данные;
  • проставить формулы подсчета маржи, НДС, комиссий;
  • добавить формулы сравнения с предыдущей неделей;
  • автоматически вычислять процентное изменение.

Openpyxl позволяет вставлять в клетки формулы в их естественном синтаксисе, а эксель затем автоматически пересчитывает их при открытии файла. Можно создавать динамические расчеты: суммирование, средние значения, работу с датами, VLOOKUP/XLOOKUP, IF, агрегатные функции, формулы с диапазонами и многое другое.

Добавление фильтров и работа с ними

Openpyxl поддерживает добавление автоматических фильтров для любого диапазона, включая таблицы с десятками тысяч строк. А еще позволяет:

 

  • сортировать конкретный диапазон;
  • превращать диапазон в полноценную Excel-таблицу;
  • сохранять пользовательские фильтры при генерации файлов;
  • комбинировать фильтры с форматированием.

Создание простых графиков

Это библиотека Python поддерживает создание основных типов диаграмм: линейных, столбчатых, круговых, гистограмм, комбинированных и др. А также допускает:

 

  • выбирать тип диаграммы;
  • указывать диапазоны данных и подписей;
  • управлять размером и положением графика;
  • добавлять несколько рядов данных;
  • размещать графики на отдельных листах.

Частые ошибки

  • Пытаться открыть файлы .xls вместо .xlsx.

Openpyxl работает только с форматом .xlsx.
Как избежать: перед загрузкой файла проверяйте его расширение.

  • Забыть вызвать workbook.save().

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

  • Работать с большими файлами без оптимизации.

Большие таблицы грузятся медленно или потребляют много памяти.
Как избежать: используйте режимы read_only=True и write_only=True, если файл не нужно модифицировать полностью.

  • Испытывать проблемы со стилями при массовом применении.

Большие циклы со стилями сильно замедляют работу.
Как избежать: применяйте стили к диапазонам или заранее создавайте объект стиля и переиспользуйте его.

  • Допускать конфликты версий Python и pip.

Команда pip install openpyxl не работает или ставит не ту версию.
Как избежать: запускайте установку через: python -m pip install openpyxl.

Шпаргалка по основным методам Openpyxl 

Заключение

Упростить работу в Экселе с помощью библиотеки openpyxl — это отличный способ прокачать навыки Python на реальных задачах. Вы работаете с файлами, структурой данных, обработкой информации и постепенно выходите на более продвинутые сценарии. Такие практические навыки особенно полезны в аналитике, финансах, маркетинге, управлении проектами и других сферах, где таблицы являются частью ежедневной работы.



Сообщение отправлено!

Ваше сообщение успешно отправлено. Наш специалист скоро свяжется с вами!

Ошибка!

Произошла ошибка при отправке сообщения. Пожалуйста, попробуйте еще раз.