Открытие XLS файлов в Python: чтение xlsx с помощью openpyxl, xlrd и pandas

0
10

Содержание

Краткая памятка по работе с XLS-файлами в Python

  1. Определите формат файла:.xls (xlrd) или.xlsx (openpyxl).
  2. Установите необходимую библиотеку через pip.
  3. Импортируйте библиотеку в скрипт.
  4. Загрузите файл с помощью соответствующей функции.
  5. Выберите нужный лист по имени или индексу.
  6. Для чтения данных используйте методы ячеек или итерацию по строкам.
  7. Для записи данных создайте новый файл или откройте существующий.
  8. Не забывайте сохранять изменения после записи.
  9. Обрабатывайте исключения (FileNotFoundError, PermissionError).
  10. Используйте виртуальное окружение для изоляции зависимостей.
  11. Проверяйте версии библиотек для совместимости.
  12. Для больших объемов данных используйте pandas.

Для начала

Python - изображение номер один
Python — изображение номер один

Таблица №1

Sales Date Sales Person Amount
12/05/18 Sila Ahmed 60000
06/12/19 Mir Hossain 50000
09/08/20 Sarmin Jahan 45000
07/04/21 Mahmudul Hasan 30000

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

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

Open - изображение номер два
Open — изображение номер два

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

Read &amp - изображение номер три
Read &amp — изображение номер три

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

  • Экспорт из Python в Excel
  • Импорт из Excel в Python
  • Преобразование форматов (CSV → Excel)
  • Поиск ошибок в данных
  • Проверка шаблонов на соответствие стандартам
  • Генерация красивых таблиц с форматированием
  • Добавление формул и диаграмм
  • Создание многостраничных документов
  • Сбор данных из многих файлов
  • Создание отчетов по шаблону
  • Ежемесячное обновление таблиц

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

How - изображение номер четыре
How — изображение номер четыре

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

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

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

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

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

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

Установка Openpyxl

using excel xlsx files with python openpyxl tutorial - изображение номер пять
using excel xlsx files with python openpyxl tutorial — изображение номер пять

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

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

Read - изображение номер шесть
Read — изображение номер шесть

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

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

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

How to read - изображение номер семь
How to read — изображение номер семь

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

How to import - изображение номер восемь
How to import — изображение номер восемь

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

how to read an excel file in pycharm how to read an excel file in python - изображение номер девять
how to read an excel file in pycharm how to read an excel file in python — изображение номер девять

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

Работа с файлами в - изображение номер десять
Работа с файлами в — изображение номер десять

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

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

  • В Windows, если PATH настроен неправильно или pip не установился.
  • В macOS/Linux, если PATH не включает путь к pip.
  • Если установлено несколько версий Python, и одна мешает другой.
ЧИТАТЬ ТАКЖЕ:  Метод Count в Python: Для Чего Он Нужен и Как Использовать

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

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

Reading - изображение номер одиннадцать
Reading — изображение номер одиннадцать

Openpyxl - изображение номер двенадцать
Openpyxl — изображение номер двенадцать

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

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

I can't open my - изображение номер тринадцать
I can't open my — изображение номер тринадцать

How to write - изображение номер четырнадцать
How to write — изображение номер четырнадцать

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

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

How to - изображение номер пятнадцать
How to — изображение номер пятнадцать

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

How to read excel file in - изображение номер шестнадцать
How to read excel file in — изображение номер шестнадцать

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

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

Working - изображение номер семнадцать
Working — изображение номер семнадцать

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

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

Create - изображение номер восемнадцать
Create — изображение номер восемнадцать

Reading and - изображение номер девятнадцать
Reading and — изображение номер девятнадцать

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

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

Запись - изображение номер двадцать
Запись — изображение номер двадцать

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

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

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

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

Import - изображение номер двадцать один
Import — изображение номер двадцать один

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

51 - изображение номер двадцать два
51 — изображение номер двадцать два

Лайфхак

How to read an excel file in - изображение номер двадцать три
How to read an excel file in — изображение номер двадцать три

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

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

Git - изображение номер двадцать четыре
Git — изображение номер двадцать четыре

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

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

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

Импорт данных в - изображение номер двадцать пять
Импорт данных в — изображение номер двадцать пять

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

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

Python reads only the formula from excel cell - изображение номер двадцать шесть
Python reads only the formula from excel cell — изображение номер двадцать шесть

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

Таблица №2

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

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

reading excel sheets( - изображение номер двадцать семь
reading excel sheets( — изображение номер двадцать семь

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

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

How to read merged excel column in python? - изображение номер двадцать восемь
How to read merged excel column in python? — изображение номер двадцать восемь

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

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

Уроки - изображение номер двадцать девять
Уроки — изображение номер двадцать девять
  • Даты читаются как объекты datetime.
  • Пустые ячейки возвращают None.
  • Формулы возвращают сами себя.

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

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

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

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

Автоматизация рутинных процессов: что это и зачем она нужна - изображение номер тридцать
Автоматизация рутинных процессов: что это и зачем она нужна — изображение номер тридцать

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

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

Добавление формул в excel с помощью python - изображение номер тридцать один
Добавление формул в excel с помощью python — изображение номер тридцать один

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

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

Читаем данные из - изображение номер тридцать два
Читаем данные из — изображение номер тридцать два

Таблица №3

Менеджер Выручка Бонус
Иванов 350000 25000
Петров 120000 10000

Снова критика - изображение номер тридцать три
Снова критика — изображение номер тридцать три

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

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

Openpyxl(Python with - изображение номер тридцать четыре
Openpyxl(Python with — изображение номер тридцать четыре

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

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

ЧИТАТЬ ТАКЖЕ:  Служба Windows на Python: создание приложения, запуск скрипта и управление сервисом

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

Ручное управление стилями - изображение номер тридцать пять
Ручное управление стилями — изображение номер тридцать пять

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

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

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

Отчет по продажам: как подготовить и шаблон отчетности менеджера по продажам - изображение номер тридцать шесть
Отчет по продажам: как подготовить и шаблон отчетности менеджера по продажам — изображение номер тридцать шесть

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

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

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

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

Python in - изображение номер тридцать семь
Python in — изображение номер тридцать семь

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

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

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

Python - быстрое построение графиков с помощью - изображение номер тридцать восемь
Python — быстрое построение графиков с помощью — изображение номер тридцать восемь

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

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

Чтение Excel-файла с помощью xlrd

Tutorial - изображение номер тридцать девять
Tutorial — изображение номер тридцать девять

Библиотека xlrd не устанавливается вместе с Python по умолчанию, так что ее придется установить. Последняя версия этой библиотеки, к сожалению, не поддерживает Excel-файлы с расширением.xlsx. Поэтому устанавливаем версию 1.2.0. Выполните следующую команду в терминале:

Затем используем вложенный цикл for. С его помощью мы будем перемещаться по ячейкам, перебирая строки и столбцы. Также в скрипте используются две функции range() для определения количества строк и столбцов в таблице.

Для чтения значения отдельной ячейки таблицы на каждой итерации цикла воспользуемся функцией cell_value(). Каждое поле в выводе будет разделено одним пробелом табуляции.

import xlrd # Open the Workbook workbook = xlrd.open_workbook(«») # Open the worksheet worksheet = workbook.sheet_by_index(0) # Iterate the rows and columns for i in range(0, 5): for j in range(0, 3): # Print the cell values with tab space print(worksheet.cell_value(i, j), end=’\t’) print(»)

How do - изображение номер сорок
How do — изображение номер сорок

Чтение Excel-файла с помощью openpyxl

How to read and write excel files in python using openpyxl - изображение номер сорок один
How to read and write excel files in python using openpyxl — изображение номер сорок один

Openpyxl – это еще одна библиотека Python для чтения файла.xlsx, и она также не идет по умолчанию вместе со стандартным пакетом Python. Чтобы установить этот модуль, выполните в терминале следующую команду:

После завершения процесса установки можно начинать писать код для чтения файла.

Функцию range() используем для чтения строк таблицы, а функцию iter_cols() — для чтения столбцов. Каждое поле в выводе будет разделено двумя пробелами табуляции.

import openpyxl # Define variable to load the wookbook wookbook = openpyxl.load_workbook(«») # Define variable to read the active sheet: worksheet = # Iterate the loop to read the cell values for i in range(0, worksheet.max_row): for col in worksheet.iter_cols(1, worksheet.max_column): print(col[i].value, end=»\t\t») print(»)

Как прочитать таблицы - изображение номер сорок два
Как прочитать таблицы — изображение номер сорок два

Чтение Excel-файла с помощью pandas

how to read excel file in python using pandas in google colab - изображение номер сорок три
how to read excel file in python using pandas in google colab — изображение номер сорок три

Если вы не пользовались библиотекой pandas ранее, вам необходимо ее установить. Как и остальные рассматриваемые библиотеки, она не поставляется вместе с Python. Выполните следующую команду, чтобы установить pandas из терминала.

После завершения процесса установки создаем файл Python и начинаем писать следующий скрипт для чтения файла.

import pandas as pd # Load the xlsx file excel_data = pd.read_excel(») # Read the values of the file in the dataframe data = (excel_data, columns=[‘Sales Date’, ‘Sales Person’, ‘Amount’]) # Print the content print(«The content of the file is:\n», data)

Data - изображение номер сорок четыре
Data — изображение номер сорок четыре

Результат работы этого скрипта отличается от двух предыдущих примеров. В первом столбце печатаются номера строк, начиная с нуля. Значения даты выравниваются по центру. Имена продавцов выровнены по правому краю, а сумма — по левому.

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

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

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

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

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

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

Ответы на популярные вопросы по открытию XLS-файлов в Python

Вопрос: Какая библиотека лучше всего подходит для чтения XLS-файлов?
Ответ: Для старых форматов.xls используйте xlrd, для.xlsx — openpyxl, а для анализа данных — pandas.

Вопрос: Могу ли я открыть XLS-файл без установки дополнительных библиотек?
Ответ: Нет, стандартная библиотека Python не поддерживает Excel-файлы, требуется установка сторонних модулей.

Вопрос: Как установить openpyxl?
Ответ: Выполните команду pip install openpyxl в терминале или командной строке.

Вопрос: Что делать, если openpyxl не читает файл?
Ответ: Проверьте, что файл не поврежден, имеет расширение.xlsx, и что у вас установлена последняя версия библиотеки.

Вопрос: Как прочитать конкретную ячейку из Excel-файла?
Ответ: Используйте метод sheet.cell(row, column).value, указав номер строки и столбца.

Вопрос: В чем разница между xlrd и openpyxl?
Ответ: xlrd работает только со старым форматом.xls, а openpyxl — с современным.xlsx.

Вопрос: Как прочитать все данные из листа Excel?
Ответ: Используйте pandas.read_excel() или пройдитесь по всем строкам и столбцам через openpyxl.

Вопрос: Можно ли записывать данные в Excel-файл с помощью Python?
Ответ: Да, openpyxl и pandas поддерживают запись и изменение данных в файлах.xlsx.

Вопрос: Как обработать ошибку FileNotFoundError при открытии файла?
Ответ: Убедитесь, что путь к файлу указан верно, и файл существует в указанной директории.

Вопрос: Поддерживает ли openpyxl формулы Excel?
Ответ: Да, openpyxl позволяет читать и записывать формулы, но не вычисляет их автоматически.