Как работать с документами Excel с помощью Python

18 января 2018

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

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

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

Итак, давайте начнем!

OpenPyXL

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

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

Установка OpenPyXL

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

Система управления пакетами, используемая для установки и управления пакетами программного обеспечения, написанными на 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 openpyxl

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

import openpyxl
excel_document = openpyxl.load_workbook('sample.xlsx')

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

тип печати (excel_document)

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

<class 'openpyxl.workbook.workbook.Workbook'>

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

Имена листов

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

excel_document.get_sheet_names ()

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

[u'Sheet1 ']

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

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

Доступ к ячейкам

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

sheet = excel_document.get_sheet_by_name('Sheet1')
print sheet['A2'].value

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

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

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

В этом случае выход будет: программист.

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

тип печати (лист ['A2'])

или:

print sheet.cell (строка = 5, столбец = 2)

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

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

Доступ к диапазону ячеек

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

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

multiple_cells = sheet['A1':'B3']
for row in multiple_cells:
    for cell in row:
        print cell.value

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

Name
Professio
Abder
Student
Bob
Engineer

Доступ ко всем строкам и столбцам

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

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

all_rows = sheet.rows
print all_rows[:]

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

. Выведенный выше сценарий будет выглядеть следующим образом:

((<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>))

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

all_columns = sheet.columns
print all_columns[:]

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

((<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. Помните сценарий, упомянутый в начале учебника? Стоит попробовать как проект!