Openpyxl создать файл excel
Вот несколько основных определений: Документы электронных таблиц Excel называются книгами. Отдельная книга сохраняется в файле с расширением .xlsx. Каждая книга может содержать несколько листов.
Установите модуль openpyxl
openpyxl - это сторонний модуль, когда он используется для обработки файлов Excel, он должен быть сначала установлен. Используйте следующую команду для установки
Создать книгу
Вы можете создать книгу, импортировав класс Workbook для openpyxl. Например:
После создания книги остается хотя бы один рабочий лист. Вы можете использовать свойство Workbook.active, чтобы получить:
По умолчанию этот метод получает первый рабочий лист
Создайте новый рабочий лист, вы можете использовать Workbook.create_sheet() метод:
Когда создается новый рабочий лист, ему автоматически присваивается имя. Значения будут присвоены в порядке (Лист, Лист1, Лист2). Но может пройти Worksheet.title Атрибут для изменения этого имени.
Если вы хотите просмотреть имена всех листов в книге, вы можете использовать Workbook.sheetname Свойства для просмотра:
Конечно, вы также можете использовать обход цикла:
Обработка данных
После создания книги и рабочего листа вы можете рассмотреть возможность изменения содержимого ячеек. Доступ к ячейкам можно получить напрямую как к ключам рабочего листа:
В это время он вернется в ячейку в A1, если она не существует, создайте ее. В настоящее время вы можете назначить напрямую:
Помимо использования заглавных букв (обозначающих столбцы) и чисел (обозначающих строки) для доступа к ячейкам.
Также может пройти Worksheet.cell() Метод напрямую использует нотацию строки и столбца для доступа к ячейке:
Доступ к нескольким ячейкам
Когда вам нужно получить доступ к нескольким ячейкам, вы можете использовать метод среза. Посещая район, вы можете обратиться к следующему письму:
При доступе к нескольким строкам или столбцам вы можете использовать следующие методы:
В дополнение к использованию вышеуказанного метода нарезки. Также можно использовать Worksheet.iter_rows() Доступ к методу, этот метод будет возвращать строку за строкой:
Точно так же есть Worksheet.iter_cols() Метод, этот метод будет возвращать столбец за столбцом:
Вот на что следует обратить внимание: Worksheet.iter_cols Метод недоступен в режиме только для чтения.
Если вам нужно пройти по всем строкам или столбцам в файле, вы можете рассмотреть Worksheet.rows Атрибуты:
Или Worksheet.columns Атрибуты:
Возвращает значение ячейки
Если вам просто нужно вернуть значение ячейки на листе, вы можете использовать Worksheet.values Атрибуты.
Этот метод будет проходить по всем строкам на листе, но возвращает только значение в ячейке.
Сохранить данные в файл
Сохраните книгу, вы можете использовать Workbook Объект Workbook.save() метод:
Откройте сохраненный файл, вы увидите, что имя рабочего листа ниже в точности совпадает с именем таблицы, созданной выше.
И вставьте содержимое в таблицу, используя описанный выше метод.
Загрузить файл
При загрузке файлов вы можете использовать openpyxl.load_workbook() Способ открытия локально существующего файла:
дополнение
Время вставки
Использовать формулу
Вы можете напрямую назначить формулу Excel ячейке в формате строки, как показано ниже:
Объединить / разделить ячейки
Когда вам нужно объединить и разделить ячейки, вы можете использовать worksheet.merge_cells() Метод и worksheet.unmerge_cells() метод:
Загрузить изображение
Этот шаг зависит от библиотеки Pillow, поэтому вам необходимо установить библиотеку Pillow перед ее использованием.
Приведенные выше результаты использования показывают
Как вы можете видеть на этом рисунке, время, введенное А1, вступило в силу.
Результатом, отображаемым в A2, является 2. Часть, отмеченная красным, указывает, что результат получен с использованием этой формулы, что означает, что вставка формулы также эффективна.
В то же время вы можете видеть, что ячейки A2: B2 были объединены.
Последний шаг - вставка изображения.Вы видите, что в ячейку A5 изображение было успешно вставлено.
Вышеупомянутый контент посвящен простому использованию библиотеки openpyxl для обработки файлов Excel.
There is no need to create a file on the filesystem to get started with openpyxl. Just import the Workbook class and start work:
A workbook is always created with at least one worksheet. You can get it by using the Workbook.active property:
This is set to 0 by default. Unless you modify its value, you will always get the first worksheet by using this method.
You can create new worksheets using the Workbook.create_sheet() method:
Sheets are given a name automatically when they are created. They are numbered in sequence (Sheet, Sheet1, Sheet2, …). You can change this name at any time with the Worksheet.title property:
The background color of the tab holding this title is white by default. You can change this providing an RRGGBB color code to the Worksheet.sheet_properties.tabColor attribute:
Once you gave a worksheet a name, you can get it as a key of the workbook:
You can review the names of all worksheets of the workbook with the Workbook.sheetname attribute
You can loop through worksheets
You can create copies of worksheets within a single workbook:
Only cells (including values, styles, hyperlinks and comments) and certain worksheet attribues (including dimensions, format and properties) are copied. All other workbook / worksheet attributes are not copied - e.g. Images, Charts.
You also cannot copy worksheets between workbooks. You cannot copy a worksheet if the workbook is open in read-only or write-only mode.
Playing with data¶
Accessing one cell¶
Now we know how to get a worksheet, we can start modifying cells content. Cells can be accessed directly as keys of the worksheet:
This will return the cell at A4, or create one if it does not exist yet. Values can be directly assigned:
There is also the Worksheet.cell() method.
This provides access to cells using row and column notation:
When a worksheet is created in memory, it contains no cells . They are created when first accessed.
Because of this feature, scrolling through cells instead of accessing them directly will create them all in memory, even if you don’t assign them a value.
will create 100x100 cells in memory, for nothing.
Accessing many cells¶
Ranges of cells can be accessed using slicing:
Ranges of rows or columns can be obtained similarly:
You can also use the Worksheet.iter_rows() method:
Likewise the Worksheet.iter_cols() method will return columns:
For performance reasons the Worksheet.iter_cols() method is not available in read-only mode.
If you need to iterate through all the rows or columns of a file, you can instead use the Worksheet.rows property:
or the Worksheet.columns property:
For performance reasons the Worksheet.columns property is not available in read-only mode.
Values only¶
If you just want the values from a worksheet you can use the Worksheet.values property. This iterates over all the rows in a worksheet but returns just the cell values:
Both Worksheet.iter_rows() and Worksheet.iter_cols() can take the values_only parameter to return just the cell’s value:
Data storage¶
Once we have a Cell , we can assign it a value:
Saving to a file¶
The simplest and safest way to save a workbook is by using the Workbook.save() method of the Workbook object:
This operation will overwrite existing files without warning.
The filename extension is not forced to be xlsx or xlsm, although you might have some trouble opening it directly with another application if you don’t use an official extension.
As OOXML files are basically ZIP files, you can also open it with your favourite ZIP archive manager.
Saving as a stream¶
If you want to save the file to a stream, e.g. when using a web application such as Pyramid, Flask or Django then you can simply provide a NamedTemporaryFile() :
You can specify the attribute template=True , to save a workbook as a template:
or set this attribute to False (default), to save as a document:
You should monitor the data attributes and document extensions for saving documents in the document templates and vice versa, otherwise the result table engine can not open the document.
The following will fail:
Loading from a file¶
The same way as writing, you can use the openpyxl.load_workbook() to open an existing workbook:
This ends the tutorial for now, you can proceed to the Simple usage section
This function uses the _active_sheet_index property, set to 0 by default. Unless you modify its value, you will always get the first worksheet by using this method.
You can also create new worksheets by using the openpyxl.workbook.Workbook.create_sheet() method
Sheets are given a name automatically when they are created. They are numbered in sequence (Sheet, Sheet1, Sheet2, …). You can change this name at any time with the title property:
The background color of the tab holding this title is white by default. You can change this providing an RRGGBB color code to the sheet_properties.tabColor property:
Once you gave a worksheet a name, you can get it as a key of the workbook:
You can review the names of all worksheets of the workbook with the openpyxl.workbook.Workbook.sheetnames() property
You can loop through worksheets
You can create copies of worksheets within a single workbook:
Only cells (including values, styles, hyperlinks and comments) and certain worksheet attribues (including dimensions, format and properties) are copied. All other workbook / worksheet attributes are not copied - e.g. Images, Charts.
You cannot copy worksheets between workbooks. You also cannot copy a worksheet if the workbook is open in read-only or write-only mode.
Playing with data¶
Accessing one cell¶
Now we know how to access a worksheet, we can start modifying cells content.
Cells can be accessed directly as keys of the worksheet
This will return the cell at A4 or create one if it does not exist yet. Values can be directly assigned
There is also the openpyxl.worksheet.Worksheet.cell() method.
This provides access to cells using row and column notation:
When a worksheet is created in memory, it contains no cells . They are created when first accessed.
Because of this feature, scrolling through cells instead of accessing them directly will create them all in memory, even if you don’t assign them a value.
will create 100x100 cells in memory, for nothing.
Accessing many cells¶
Ranges of cells can be accessed using slicing
Ranges of rows or columns can be obtained similarly:
You can also use the openpyxl.worksheet.Worksheet.iter_rows() method:
Likewise the openpyxl.worksheet.Worksheet.iter_cols() method will return columns:
If you need to iterate through all the rows or columns of a file, you can instead use the openpyxl.worksheet.Worksheet.rows() property:
or the openpyxl.worksheet.Worksheet.columns() property:
Data storage¶
Once we have a openpyxl.cell.Cell , we can assign it a value:
You can also enable type and format inference:
The simplest and safest way to save a workbook is by using the openpyxl.workbook.Workbook.save() method of the openpyxl.workbook.Workbook object:
This operation will overwrite existing files without warning.
Extension is not forced to be xlsx or xlsm, although you might have some trouble opening it directly with another application if you don’t use an official extension.
As OOXML files are basically ZIP files, you can also end the filename with .zip and open it with your favourite ZIP archive manager.
You can specify the attribute template=True , to save a workbook as a template:
or set this attribute to False (default), to save as a document:
You should monitor the data attributes and document extensions for saving documents in the document templates and vice versa, otherwise the result table engine can not open the document.
The following will fail:
The same way as writing, you can import openpyxl.load_workbook() to open an existing workbook:
This ends the tutorial for now, you can proceed to the Simple usage section
openpyxl is a Python library to read/write Excel 2010 xlsx/xlsm/xltx/xltm files.
It was born from lack of existing library to read/write natively from Python the Office Open XML format.
All kudos to the PHPExcel team as openpyxl was initially based on PHPExcel.
Security¶
By default openpyxl does not guard against quadratic blowup or billion laughs xml attacks. To guard against these attacks install defusedxml.
Mailing List¶
Documentation¶
- installation methods
- code examples
- instructions for contributing
Support¶
This is an open source project, maintained by volunteers in their spare time. This may well mean that particular features or functions that you would like are missing. But things don’t have to stay that way. You can contribute the project Development yourself or contract a developer for particular features.
Professional support for openpyxl is available from Clark Consulting & Research and Adimian. Donations to the project to support further development and maintenance are welcome.
Bug reports and feature requests should be submitted using the issue tracker. Please provide a full traceback of any error you see and if possible a sample file. If for reasons of confidentiality you are unable to make a file publicly available then contact of one the developers.
The repository is being provided by Octobus and Clever Cloud.
How to Contribute¶
Any help will be greatly appreciated, just follow those steps:
For further information see Development
Other ways to help¶
There are several ways to contribute, even if you can’t code (or can’t code well):
- triaging bugs on the bug tracker: closing bugs that have already been closed, are not relevant, cannot be reproduced, …
- updating documentation in virtually every area: many large features have been added (mainly about charts and images at the moment) but without any documentation, it’s pretty hard to do anything with it
- proposing compatibility fixes for different versions of Python: we support 3.6, 3.7, 3.8 and 3.9.
Installation¶
Install openpyxl using pip. It is advisable to do this in a Python virtualenv without system packages:
There is support for the popular lxml library which will be used if it is installed. This is particular useful when creating large files.
To be able to include images (jpeg, png, bmp,…) into an openpyxl file, you will also need the “pillow” library that can be installed with:
Working with a checkout¶
Sometimes you might want to work with the checkout of a particular version. This may be the case if bugs have been fixed but a release has not yet been made.
Читайте также: