Сообщить об ошибке.

Класс Workbook() модуля openpyxl в Python

Основные атрибуты и методы объекта Workbook()

Синтаксис:

from openpyxl import Workbook

wb = Workbook(write_only=False, iso_dates=False)

Параметры:

Возвращаемое значение:

Описание:

Класс Workbook() модуля openpyxl представляет собой контейнер для всех остальных частей XLSX-документа.

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

>>> from openpyxl import Workbook
# создаем объект книги
>>> wb = Workbook()
# список листов в только что созданной книге
>>> wb.sheetnames
# ['Sheet']

# доступ к созданному по умолчанию листу 
>>> ws = wb.active

Атрибуты и методы объекта Workbook.


Workbook.active:

Свойство Workbook.active получает текущий активный лист или None.

>>> from openpyxl import Workbook
# создаем объект книги
>>> wb = Workbook()
>>> wb.sheetnames
# ['MySheet']

# доступ к созданному по умолчанию листу 
>>> ws = wb.active
# переименовываем
>>> ws.title = 'MySheet'
# смотрим
>>> wb.sheetnames
# ['MySheet']

Workbook.add_named_style(style):

Метод Workbook.add_named_style() добавляет именованный стиль.

Workbook.chartsheets:

Свойство Workbook.chartsheets возвращает список таблиц диаграмм в этой книге.

Workbook.close():

Метод Workbook.close() закрывает файл рабочей книги, если он открыт. Влияет только на режимы только для чтения и только для записи.

Workbook.copy_worksheet(from_worksheet):

Метод Workbook.copy_worksheet() копирует существующий лист в текущую книгу. Возвращает копию первоначального рабочего листа.

Аргумент from_worksheet - это объект рабочего листа Worksheet, который нужно скопировать.

>>> source_page = wb.active
>>> target_page = wb.copy_worksheet(source_page)

Предупреждение. Этот метод не может копировать листы между книгами. рабочие листы можно копировать только в ту рабочую книгу, к которой они принадлежат.

Workbook.create_chartsheet(title=None, index=None):

Метод Workbook.create_chartsheet() создает новый лист таблицы диаграмм с именем title и вставляет его в положение положением index. Если index не задан, то вставляет лист последним.

Workbook.create_sheet(title=None, index=None):

Метод Workbook.create_sheet() создает новый рабочий лист с необязательным заголовком листа title и необязательным положением index, в которое будет вставлен лист.

>>> from openpyxl import Workbook
>>> wb = Workbook()
# вставить рабочий лист в конец (по умолчанию)
>>> ws1 = wb.create_sheet("Mysheet")
# вставить рабочий лист в первую позицию
>>> ws2 = wb.create_sheet("Mysheet", 0)
# вставить рабочий лист в предпоследнюю позицию
>>> ws3 = wb.create_sheet("Mysheet", -1)
>>> wb.sheetnames
# ['Mysheet1', 'Sheet', 'Mysheet2', 'Mysheet']

При чтении уже имеющейся электронной таблицы из файла XLSX, доступ к рабочим листам можно получить, обратившись к объекту книги, как к словарю. При этом колючем будет служить имя существующего листа: wb['NewPage']

>>> from openpyxl import load_workbook
# загружаем XLSX-документ
>>> wb = load_workbook('test.xlsx')
# список рабочих листов
>>> name_sheet = wb.sheetnames
>>> name_sheet
# ['Mysheet1', 'Sheet', 'Mysheet2', 'Mysheet']

# получим доступ к рабочему листу 'Mysheet1'
sheet = wb['Mysheet1']
# или получим доступ к листу 'Mysheet2'
# используя его индекс в списке `wb.sheetnames`
sheet1 = wb[name_sheet[2]]

Workbook.defined_names:

Свойство Workbook.defined_names возвращает список объектов определенных имен, доступных в рабочей книге.

>>> from openpyxl import Workbook
>>> from openpyxl.workbook.defined_name import DefinedName
>>> wb = Workbook()
>>> new_range = DefinedName('newrange', attr_text='Sheet!$A$1:$A$5')
>>> wb.defined_names.append(new_range)
>>> wb.defined_names
# <openpyxl.workbook.defined_name.DefinedNameList object>

Workbook.index(worksheet):

Метод Workbook.index() возвращает текущий индекс объекта рабочего листа worksheet.

>>> from openpyxl import Workbook
>>> wb = Workbook()
# вставить рабочий лист в конец (по умолчанию)
>>> ws1 = wb.create_sheet("Mysheet")
# вставить рабочий лист в первую позицию
>>> ws2 = wb.create_sheet("Mysheet", 0)
# вставить рабочий лист в предпоследнюю позицию
>>> ws3 = wb.create_sheet("Mysheet", -1)
>>> wb.index(ws1)
# 3
>>> wb.sheetnames[3]
# 'Mysheet'

Workbook.mime_type:

Свойство Workbook.mime_type возвращает тип mime, который определяется тем, является ли рабочая книга шаблоном или нет, а также содержит ли она макросы.

>>> wb.mime_type
# 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml'

Excel требует, чтобы расширение файла совпадало, но модуль openpyxl не обеспечивает этого.

Workbook.move_sheet(sheet, offset=0):

Метод Workbook.move_sheet() перемещает лист с именем sheet на величину offset.

>>> wb.sheetnames
# ['Mysheet', 'Mysheet1', 'Mysheet2']
>>> wb.move_sheet('Mysheet', offset=1)
>>> wb.sheetnames
# ['Mysheet1', 'Mysheet', 'Mysheet2']

Workbook.named_styles
Workbook.style_names:

Свойство Workbook.named_styles возвращает список доступных именованных стилей.

Workbook.remove(worksheet):

Метод Workbook.remove() удаляет объект рабочего листа из этой книги. Аргумент worksheet - объект рабочего листа Worksheet.

# выясним, названия листов присутствуют в книге
>>> name_list = wb.sheetnames
>>> name_list
# ['Mysheet1', 'NewPage', 'Mysheet2', 'Mysheet', 'Mysheet1 Copy']

# допустим, что нам не нужны первый и последний
# удаляем первый лист по его имени с проверкой 
# существования такого имени в книге
>>> if 'Mysheet1' in wb.sheetnames:
        # Если лист с именем `Mysheet1` присутствует
        # в списке листов экземпляра книги, то удаляем
...     wb.remove(wb['Mysheet1'])
...
>>> wb.sheetnames
# ['NewPage', 'Mysheet2', 'Mysheet', 'Mysheet1 Copy']

# удаляем последний лист через оператор
#  `del`, имя листа извлечем по индексу 
# полученного списка `name_list`
>>> del wb[name_list[-1]]
>>> wb.sheetnames
# ['NewPage', 'Mysheet2', 'Mysheet']

Workbook.save(filename):

Метод Workbook.save() сохраняет текущую книгу под заданным именем файла filename.

Предупреждение. При создании книги с использованием аргумента write_only, установленного в значение True, можно вызвать эту функцию только один раз. Последующие попытки изменить или сохранить файл вызовут исключение openpyxl.shared.exc.WorkbookAlreadySaved.

Workbook.sheetnames:

Свойство Workbook.sheetnames возвращает список имен рабочих листов в этой книге. Имена возвращаются в порядке следования рабочих листов.

>>> wb.sheetnames
# ['Mysheet1', 'NewPage', 'Mysheet2', 'Mysheet']

>>> for sheet in wb:
...     print(sheet.title)
# Mysheet1
# NewPage
# Mysheet2
# Mysheet

Workbook.worksheets:

Свойство Workbook.worksheets возвращает список объектов листов Worksheet в этой книге.

>>> from openpyxl import Workbook
>>> wb = Workbook()
>>> ws1 = wb.create_sheet("Mysheet")
>>> wb.worksheets
# [<Worksheet "Sheet">, <Worksheet "Mysheet">]