Я считаю, что вы использовали Microsoft Excel в некоторых случаях. Он очень эффективен при работе с электронными таблицами, таблицами, диаграммами и т. Д. Но при чем тут Python?
Python меняет игру, когда дело доходит до файлов Excel, потому что он может автоматизировать сложные вещи, с которыми вы можете столкнуться при выполнении некоторых задач, связанных с Excel. Например, вам может потребоваться найти информацию в сотнях таблиц бюджетов компании. Очень сложно, не правда ли? В этом уроке я покажу вам, как легко использовать Python для работы с документами Excel.
О, не беспокойтесь, если на вашем компьютере не установлен Microsoft Excel. Вы можете использовать другие альтернативы, чтобы пройти этот учебник, такие как LibreOffice Calc и OpenOffice Calc .
Итак, начнем!
OpenPyXL
OpenPyXL
— это библиотека, используемая для чтения и записи файлов Excel 2010 xlsx/xlsm/xltx/xltm
. Это библиотека, которую мы будем использовать в этом руководстве для работы с документами Excel.
Первое, что нам нужно сделать, чтобы использовать эту библиотеку, это установить OpenPyXL
.
Установка OpenPyXL
Для установки OpenPyXL
мы будем использовать pip , который (на основе Википедии):
Система управления пакетами, используемая для установки и управления программными пакетами, написанными на Python. Многие пакеты можно найти в индексе пакетов Python (PyPI) .
Вы можете выполнить шаги, указанные в Руководстве пользователя по Python Packaging, для установки pip
, но если у вас Python 2.7.9
и выше или Python 3.4
и выше, у вас уже есть pip
!
OpenPyXL
теперь можно просто установить, введя следующую команду (в терминале Mac OS X):
pip install openpyxl
Открытие документа Excel
После установки 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?
Это можно сделать с помощью следующего скрипта:
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 с нашим полным руководством по питону, независимо от того, начинаете ли вы или начинающий программист, ищущий новые навыки.