Статьи

Как работать с документами Excel, используя Python

Я считаю, что вы использовали Microsoft Excel в некоторых случаях. Он очень эффективен при работе с электронными таблицами, таблицами, диаграммами и т. Д. Но при чем тут Python?

Python меняет игру, когда дело доходит до файлов Excel, потому что он может автоматизировать сложные вещи, с которыми вы можете столкнуться при выполнении некоторых задач, связанных с Excel. Например, вам может потребоваться найти информацию в сотнях таблиц бюджетов компании. Очень сложно, не правда ли? В этом уроке я покажу вам, как легко использовать Python для работы с документами Excel.

О, не беспокойтесь, если на вашем компьютере не установлен Microsoft Excel. Вы можете использовать другие альтернативы, чтобы пройти этот учебник, такие как LibreOffice Calc и OpenOffice Calc .

Итак, начнем!

OpenPyXL — это библиотека, используемая для чтения и записи файлов Excel 2010 xlsx/xlsm/xltx/xltm . Это библиотека, которую мы будем использовать в этом руководстве для работы с документами Excel.

Первое, что нам нужно сделать, чтобы использовать эту библиотеку, это установить OpenPyXL .

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

Система управления пакетами, используемая для установки и управления программными пакетами, написанными на Python. Многие пакеты можно найти в индексе пакетов Python (PyPI) .

Вы можете выполнить шаги, указанные в Руководстве пользователя по Python Packaging, для установки pip , но если у вас Python 2.7.9 и выше или Python 3.4 и выше, у вас уже есть pip !

OpenPyXL теперь можно просто установить, введя следующую команду (в терминале Mac OS X):

pip install openpyxl

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

Прежде чем мы сможем использовать OpenPyXL , нам нужно import его следующим образом:

import openpyxl

Для открытия документа Excel нам нужен метод load_workbook() . Если вам интересно, что подразумевается под книгой, это просто документ электронной таблицы Excel. Сценарий, который нам нужен для открытия документа Excel, выглядит следующим образом:

1
2
import openpyxl
excel_document = openpyxl.load_workbook(‘sample.xlsx’)

Давайте теперь посмотрим type возвращаемый из load_workbook() . Это можно сделать следующим образом:

print type(excel_document)

Это вернет следующее:

1
<class ‘openpyxl.workbook.workbook.Workbook’>

Как мы видим, возвращаемым объектом является Workbook , тип данных workbook . Объект Workbook здесь представляет файл Excel.

Листы в Excel состоят из столбцов (буквы начинаются с A, B, C и т. Д.) И строк (начиная с 1, 2, 3 и т. Д.). Чтобы проверить, какие листы у нас есть в нашем документе Excel, мы используем метод get_sheet_names() следующим образом:

excel_document.get_sheet_names()

Если мы print вышеприведенную команду, мы получим следующее:

[u'Sheet1']

Таким образом, показывая, что у нас есть один лист, который называется Sheet1 .

Если у вас есть несколько листов, вы можете получить доступ к определенному листу по его имени, используя этот метод: get_sheet_by_name() .

Теперь, когда мы узнали, как открыть файл Excel и получить лист, давайте посмотрим, насколько просто получить доступ к ячейке на этом листе. Все, что вам нужно сделать, это получить этот лист, а затем определить местоположение (координату) ячейки. Допустим, мы хотим получить доступ к столбцу A строки 2 в имеющемся у нас документе Excel, то есть A2 . Это может быть реализовано следующим образом:

1
2
sheet = excel_document.get_sheet_by_name(‘Sheet1’)
print sheet[‘A2’].value

В этом случае вам будет возвращено следующее значение: Abder .

Мы также можем использовать запись строки-столбца. Например, если мы хотим получить доступ к ячейке в строке 5 и столбце 2 , мы набираем следующее:

sheet.cell(row = 5, column = 2).value

Выход в этом случае будет: programmer .

Если мы хотим увидеть тип объекта, представляющий ячейку, мы можем напечатать:

print type(sheet['A2'])

или:

print sheet.cell(row = 5, column = 2)

В этом случае вы получите следующий вывод:

<class 'openpyxl.cell.cell.Cell'>

Это означает, что объект имеет тип Cell .

Что если вы заинтересованы в доступе к диапазону ячеек, а не только к одной ячейке? Допустим, мы хотим получить доступ к ячейкам от A1 до B3 , как это выглядит в нашем документе Excel?

Ячейки A1 - B3 таблицы Excel

Это можно сделать с помощью следующего скрипта:

1
2
3
4
multiple_cells = sheet[‘A1′:’B3’]
for row in multiple_cells:
    for cell in row:
        print cell.value

В этом случае вы получите следующий вывод:

1
2
3
4
5
6
Name
Profession
Abder
Student
Bob
Engineer

OpenPyXL позволяет вам получить доступ ко всем строкам и столбцам в вашем документе Excel, используя методы OpenPyXL rows() и columns() соответственно.

Чтобы получить доступ ко всем строкам, мы можем сделать следующее:

1
2
all_rows = sheet.rows
print all_rows[:]

Обратите внимание, что мы использовали нотацию [:] для доступа ко всем строкам . Это связано с тем, что возвращаемый тип объекта из whole_document является tuple .

Вывод вышеприведенного скрипта будет следующим:

1
((<Cell Sheet1.A1>, <Cell Sheet1.B1>), (<Cell Sheet1.A2>, <Cell Sheet1.B2>), (<Cell Sheet1.A3>, <Cell Sheet1.B3>), (<Cell Sheet1.A4>, <Cell Sheet1.B4>), (<Cell Sheet1.A5>, <Cell Sheet1.B5>), (<Cell Sheet1.A6>, <Cell Sheet1.B6>), (<Cell Sheet1.A7>, <Cell Sheet1.B7>))

С другой стороны, если мы хотим получить доступ ко всем столбцам , мы просто делаем следующее:

1
2
all_columns = sheet.columns
print all_columns[:]

В этом случае вы получите следующий вывод:

1
((<Cell Sheet1.A1>, <Cell Sheet1.A2>, <Cell Sheet1.A3>, <Cell Sheet1.A4>, <Cell Sheet1.A5>, <Cell Sheet1.A6>, <Cell Sheet1.A7>), (<Cell Sheet1.B1>, <Cell Sheet1.B2>, <Cell Sheet1.B3>, <Cell Sheet1.B4>, <Cell Sheet1.B5>, <Cell Sheet1.B6>, <Cell Sheet1.B7>))

Конечно, вы можете делать больше с документами Excel, как вы можете видеть в документации OpenPyXL .

Из этого урока мы заметили, насколько гибкой может быть работа с документами Excel с использованием Python. Помните сценарий, упомянутый в начале урока? Стоит попробовать как проект!

Изучите Python с нашим полным руководством по питону, независимо от того, начинаете ли вы или начинающий программист, ищущий новые навыки.