Добавить в корзинуПозвонить
Найти в Дзене
Властелин машин

Коммуникация с Excel на Python без VBA

Для многих VBA является неудобным языком программирования с непривычным синтаксисом, однако он является стандартом при выполнении сложных манипуляций с файлами Microsoft Office. В то же время тем, кто не желает мигрировать с языка Python, неоценимую помощь может оказать модуль openpyxl, который позволяет работать с Excel на уровне столбцов, строк и ячеек. Установка модуля осуществляется просто - pip install openpyxl. Создадим демонстрационный файл с двумя листами вида: Чтение и запись Чтение Происходит посредством вызова функции load_workbook с именем файла в качестве параметра: Запись Осуществляется методом save объекта рабочей книги: Создание Также можно создать и сохранить рабочую книгу самому. Для этого возвращается объект класса Workbook и впоследствии сохраняется методом save: Листы и их свойства Продолжим работу с демонстрационным файлом file.xlsx. Cписок листов Для получения достаточно вызвать свойство sheetnames рабочей книги: Получение Происходит через свойство active (возвра
Оглавление

Для многих VBA является неудобным языком программирования с непривычным синтаксисом, однако он является стандартом при выполнении сложных манипуляций с файлами Microsoft Office. В то же время тем, кто не желает мигрировать с языка Python, неоценимую помощь может оказать модуль openpyxl, который позволяет работать с Excel на уровне столбцов, строк и ячеек.

Установка модуля осуществляется просто - pip install openpyxl. Создадим демонстрационный файл с двумя листами вида:

-2

Чтение и запись

Чтение

Происходит посредством вызова функции load_workbook с именем файла в качестве параметра:

-3

Запись

Осуществляется методом save объекта рабочей книги:

-4

Создание

Также можно создать и сохранить рабочую книгу самому. Для этого возвращается объект класса Workbook и впоследствии сохраняется методом save:

-5

Листы и их свойства

Продолжим работу с демонстрационным файлом file.xlsx.

Cписок листов

Для получения достаточно вызвать свойство sheetnames рабочей книги:

-6

Получение

Происходит через свойство active (возвращается лист, запускаемый при загрузке книги) либо, указав имя листа в квадратных скобках после имени рабочей книги (по аналогии с адресацией списков):

-7

Создание

Осуществляется методом create_sheet. Создадим новую рабочую книгу, новый лист и сохраним в файле:

-8

Количество строк и столбцов листа

Эти значения доступны через атрибуты max_row и max_column листа (далее wb - объект рабочей книги файла file.xlsx):

-9

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

Ячейки и их свойства

Получение ячеек

Осуществляется путем адресации по имени либо по номеру строки и столбца (начиная с 1):

-10

Значение и координаты

У каждой ячейки есть значение (value), а также местоположение/координаты (coordinate), определяемые строкой (row), столбцом (column) на пересечении которых она находится:

-11

Диапазоны, строки и столбцы

Диапазон ячеек

Для получения обращаемся к объекту листа с указанием левой верхней и правой нижней ячеек:

-12

Так можно вывести на экран значения ячеек:

-13

Строки и столбцы

Используя свойства rows, columns объекта листа, можно получить генераторы всех ячеек (отличие - первое измерение по строкам или столбцам):

-14

Так перебираются элементы по столбцам:

-15

Также можно обратиться к отдельным строкам и столбцам:

-16

Преобразование буквенных обозначений столбцов в числа и обратно

Для этого используются функции column_index_from_string и get_column_letter модуля openpyxl.utils:

-17
-18