from openpyxl import Workbook wb = Workbook(write_only=False, iso_dates=False)
write_only=False
- режим только для записи,iso_dates=False
- базовый формат даты.Класс Workbook()
модуля openpyxl
представляет собой контейнер для всех остальных частей XLSX-документа.
Внимание. При создании экземпляра рабочей книги, по умолчанию уже создается один пустой рабочий лист, доступ к которому можно получить при помощи свойства Workbook.active
:
>>> from openpyxl import Workbook # создаем объект книги >>> wb = Workbook() # список листов в только что созданной книге >>> wb.sheetnames # ['Sheet'] # доступ к созданному по умолчанию листу >>> ws = wb.active
Workbook.active
текущий активный лист,Workbook.add_named_style()
добавляет именованный стиль,Workbook.chartsheets
список таблиц диаграмм,Workbook.close()
закрывает файл,Workbook.copy_worksheet()
копирует существующий лист,Workbook.create_chartsheet()
создает лист таблицы диаграмм,Workbook.create_sheet()
создает рабочий лист,Workbook.defined_names
возвращает список объектов определенных имен,Workbook.index()
индекс рабочего листа,Workbook.mime_type
возвращает mime
-тип,Workbook.move_sheet()
перемещает лист,Workbook.named_styles
список доступных именованных стилей,Workbook.remove()
удаляет рабочий лист,Workbook.save()
сохраняет текущую книгу,Workbook.sheetnames
список имен рабочих,Workbook.worksheets
список объектов листов Worksheet
,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">]