Как работать с excel в python
Перейти к содержимому

Как работать с excel в python

  • автор:

Импорт данных в Python – чтение и запись файлов Excel

Всем привет! Уверен, что подавляющее большинство читателей этой статьи интересует анализ данных. Иначе вас бы здесь не было! Но для начала данные необходимо импортировать в Python. Помимо баз данных, средством решения этой задачи являются файлы. В сфере науки о данных чаще всего используются файлы в формате csv (значения, разделённые запятыми), но нередко можно встретить и формат xlsx, потому что почти во всех компаниях Excel по-прежнему является самой популярной программой для редактирования таблиц.

Я покажу вам, как читать файлы Excel с помощью Python. При правильном выборе библиотек это совсем не сложно.

Python: чтение файлов Excel

Вариантов довольно много. То есть, добавить файлы xlsx в Python можно несколькими способами. Если вам нужно просто и быстро достать данные из файла Excel, то лучше всего подойдёт библиотека pandas. Если требуется более высокий уровень контроля, или вы собираетесь считывать формулы, стоит воспользоваться пакетами xlrd или openpyxl. Фактически, для доступа к данным Excel библиотека pandas использует xlrd в фоновом режиме.

Файл Jupyter Notebook с кодом для всех трёх вариантов можно найти по этой ссылке.

Импорт файлов xlsx с помощью Pandas

Одним из популярных способов чтения файлов Excel в Python является функция read_excel из pandas. Если вы занимаетесь “наукой о данных” и работаете с Python, библиотека pandas в любом случае незаменима. Функция read_excel способна обрабатывать файлы xls (старый формат) и xlsx, а также записывать содержимое в DataFrame.

У этой функции есть целый ряд параметров, наиболее важные из которых перечислены ниже:

  • Здесь можно ввести числовое значение (начиная с 0) или название электронной таблицы. По умолчанию считывается первая таблица в файле. Если в качестве значения указать список, то будет возвращён словарь датафреймов (см. ниже).
  • Если вам требуется пропустить первые строки (обычное дело с таблицами Excel, поскольку очень часто сверху в них находится заголовок и описание), сделать это можно с помощью данного параметра, просто указав, сколько строк вы хотите пропустить. Как обычно в Python, отсчёт начинается с нуля, т.е. если вам нужно начать с 4-й строки, используйте skiprows=3.
  • Строка, содержащая “хедер”, т.е. заголовки столбцов. При установленном значении “0” используется первая строка. Если у столбцов не должно быть заголовков, установите значение “None”.
  • Этот параметр позволяет передать в функцию список с именами столбцов
  • Если вы хотите вывести только конкретные столбцы, их нужно указать здесь. Лучший вариант в этом случае – передать список с номерами или названиями столбцов.
  • Если вам надо использовать типы данных, которые могут отличаться от автоматически распознанных, подставьте к этому параметру словарь, где указаны конкретные типы данных для конкретных столбцов.
  • Если не хотите считывать все строки, можете ограничить их число с помощью параметра nrows.

Перечисленные параметры должны охватить большинство возможных сценариев использования. Если вам потребуется более специализированная информация, посмотрите справочные материалы по API read_excel.

Импорт одновременно нескольких листов файла Excel

Как указано в описании параметра sheet_name, он позволяет указать список номеров или названий рабочих листов. В этом случае вы получите не датафрейм, а словарь датафреймов.

Импорт данных Excel с помощью пакета XLRD

При использовании пакета xlrd вы получаете гораздо больше контроля над таблицами Excel, но и разобраться с ним немного сложнее. Однако в настоящее время разработка прекращена. На его странице в GitHub говорится, что лучше использовать openpyxl.

Помимо xlrd, предназначенной для чтения, есть ещё библиотеки xlwt для записи файлов xls (Excel 97 – 2003) и xlutils для редактирования современных файлов Excel.

Первым делом надо открыть файл

С помощью функции sheet_names вы получаете названия таблиц

После этого к таблице можно обратиться по её названию, например:

API xlrd имеет очень логичную структуру и людям, обладающим некоторым опытом взаимодействия с API, несложно будет в нём разобраться.

  • В модуль book входят все инструменты, которые нужны для работы со всей книгой. Класс xlrd.book.Book хранит её содержимое.
  • В модуль sheet входят все инструменты для работы с отдельными рабочими листами. И соответствующий класс xlrd.sheet.Sheet хранит содержимое рабочего листа
  • Стоит также упомянуть модуль formatting, который позволяет считать форматирование файла
  • Модуль formula (обратите внимание) работает не с формулами каждой ячейки, а с менеджером имен. Если вы хотите прочитать формулы из отдельных ячеек, это делается с помощью openpyxl, а
  • xldate помогает разобраться с датой и временем

Пакет Openpyxl: чтение файлов Excel

Если вам нужно не просто прочитать данные, а сделать что-то ещё, можете воспользоваться пакетом openpyxl. Хотя лично мне больше по душе pandas.

Здесь открыть и просмотреть книгу Excel тоже очень легко.

Флаг data_only позволяет указать, что будет считываться – формулы или вычисляемые значения. По умолчанию стоит data_only = False, поэтому считываются формулы.

К сожалению, пакет не поддерживает изображения и диаграммы, поэтому с помощью openpyxl не получится модифицировать шаблоны или вставлять данные в существующие дэшборды на основе Excel. Подходящим инструментом для этого является xlwings, разговор о котором будет чуть позже.

Но давайте вернёмся к openpyxl. Каждая книга Excel содержит рабочие листы, к которым можно легко обращаться по имени

Если надо преобразовать данные в датафрейм pandas, это делается следующим образом. В приведённом примере таблица начинается с четвёртой строки.

Опять же, вот ещё ссылка на документацию openpyxl. Также вас может заинтересовать глава 12 в бесплатной книге Automate the boring stuff, там речь идёт как раз о применении пакета openpyxl.

Python: сохранение файлов Excel

Логично предположить, что помимо чтения файлов Excel нам в какой-то момент понадобится возможность их сохранять. Файл Jupyter Notebook с кодом для всех трёх вариантов можно найти по этой ссылке.

Запись датафрейма в файл XLSX с помощью Pandas

Опять же, с помощью pandas записать датафрейм в файл Excel очень легко. За это отвечает функция to_excel, как в следующем примере

Для индивидуализации можно использовать следующие параметры. На самом деле их больше, но остальные нам пока не нужны.

  • Как должны отображаться отсутствующие значения. По умолчанию стоит пустая строка.
  • Здесь можно задать формат для количества знаков после запятой.
  • Если вы хотите вывести не все столбцы, это можно указать здесь.
  • Определяет, будут ли выводиться названия столбцов. В качестве значения также можно указать список названий.
  • Этот флаг позволяет указать, нужно записывать индекс строки или нет.
  • Название индексного столбца.
  • Строка в файле Excel, начиная с которой будет записываться таблица.
  • Столбец в файле Excel, начиная с которого будет записываться таблица.
Запись нескольких таблиц в один файл Excel

Для pandas и это не является проблемой. Нужно только вооружиться функцией ExcelWriter. Вот как это работает:

Запись файлов Excel с помощью XLWT

Запись файла xls (обратите внимание, что модуль xlwt не поддерживает новый формат xlsx, который используется в Excel начиная с версии 2007).

Запись файлов Excel с помощью Openpyxl

Запись файла тоже не вызывает никаких проблем:

Помимо прочего, вы можете делать, например, следующее:

Заключение по теме работы с файлами Excel с использованием Python

Подводя итог, можно сказать следующее:

Если вам требуется только читать таблицы или записывать их в файлы Excel, ваш вариант – pandas. В нём простая в использовании функция импорта/экспорта, да и фирменный тип данных DataFrame от pandas является идеальным для дальнейшей обработки данных.

Если вам нужен более высокий уровень контроля, и вы хотите считывать или редактировать отдельные ячейки, а также форматировать их и т.д., вам подойдёт openpyxl. Если по какой-то неведомой причине вам всё ещё приходится использовать формат xls (некоторые компании до сих пор от него не отказались), возьмите xlrt/xlwt/xlutils.

Надеюсь, вы почерпнули из этой статьи что-то полезное. Напишите в комментариях, какой из пакетов вы предпочитаете использовать. А если вы хотите помочь распространению знаний из области Data Science и поддержать меня в этом начинании, то поделитесь данным постом у себя в Twitter или Facebook.

Интеграция MS Excel и Python

В сегодняшней статье я хотел бы, как можно подробнее, рассмотреть интеграцию приложений Python и MS Excel. Данные вопрос может возникнуть, например, при создании какой-либо системы онлайн отчетности, которая должна выгружать результаты в общепринятый формат ну или какие-либо другие задачи. Также в статье я покажу и обратную интеграцию, т.е. как использовать функцию написанную на python в Excel, что также может быть полезно для автоматизации отчетов.

Работаем с файлами MS Excel на Python

Для работы с Excel файлами из Python мне известны 2 варианта:

Использование библиотек

Итак, первый метод довольно простой и хорошо описан. Например, есть отличная статья для описания работы c xlrd, xlwt, xlutils. Поэтому в данном материале я приведу небольшой кусок кода с их использованием.

Для начала загрузим нужные библиотеки и откроем файл xls на чтение и выберем
нужный лист с данными:

Теперь давайте посмотрим, как считать значения из нужных ячеек:

Как видно чтение данных не составляет труда. Теперь запишем их в другой файл. Для этого создам новый excel файл с новой рабочей книгой:

Запишем в новый файл полученные ранее данные и сохраним изменения:

Из примера выше видно, что библиотека xlrd отвечает за чтение данных, а xlwt — за запись, поэтому нет возможности внести изменения в уже созданную книгу без ее копирования в новую. Кроме этого указанные библиотеки работают только с файлами формата xls (Excel 2003) и у них нет поддержки нового формата xlsx (Excel 2007 и выше).

Чтобы успешно работать с форматом xlsx, понадобится библиотека openpyxl. Для демонстрации ее работы проделаем действия, которые были показаны для предыдущих библиотек.

Для начала загрузим библиотеку и выберем нужную книгу и рабочий лист:

Как видно из вышеприведенного листинга сделать это не сложно. Теперь посмотрим как можно считать данные:

Отличие от прошлых библиотек в том, что openpyxl дает возможность отображаться к ячейкам и последовательностям через их имена, что довольно удобно и понятно при чтении программы.

Теперь посмотрим как нам произвести запись и сохранить данные:

Из примера видно, что запись, тоже производится довольно легко. Кроме того, в коде выше, можно заметить, что openpyxl кроме имен ячеек может работать и с их индексами.

К недостаткам данной библиотеки можно отнести, то что, как и в предыдущем примере, нет возможности сохранить изменения без создания новой книги.

Как было показано выше, для более менее полноценной работы с excel файлами, в данном случае, нужно 4 библиотеки, и это не всегда удобно. Кроме этого, возможно нужен будет доступ к VBA (допустим для какой-либо последующей обработки) и с помощью этих библиотек его не получить.

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

Работа с com-объектом

В своих отчетах я предпочитаю использовать второй способ, а именно использование файла Excel через com-объект с использованием библиотеки win32com. Его преимуществом, является то, что вы можете выполнять с файлом все операции, которые позволяет делать обычный Excel с использованием VBA.

Проиллюстрируем это на той же задаче, что и предыдущие примеры.

Для начала загрузим нужную библиотеку и создадим COM объект.

Теперь мы можем работать с помощью объекта Excel мы можем получить доступ ко всем возможностям VBA. Давайте, для начала, откроем любую книгу и выберем активный лист. Это можно сделать так:

Давайте получим значение первой ячейки и последовательности:

Как можно заметить, мы оперируем здесь функциями чистого VBA. Это очень удобно если у вас есть написанные макросы и вы хотите использовать их при работе с Python при минимальных затратах на переделку кода.

Посмотрим, как можно произвести запись полученных значений:

Из примера видно, что данные операции тоже довольно просто реализовываются. Кроме этого, можно заметить, что изменения мы сохранили в той же книге, которую открыли для чтения, что достаточно удобно.

Однако, внимательный читатель, обратит внимание на переменную i, которая инициализируется не 0, как принято python, а 1. Это связано с тем, что мы работаем с индексами ячеек как из VBA, а там нумерация начинается не с 0, а с 1.

На этом закончим разбор способов работы с excel файлами в python и перейдем к обратной задаче.

Вызываем функции Python из MS Excel

Может возникнуть такая ситуация, что у вас уже есть какой-либо функция, которая обрабатывает данные на python, и нужно перенести ее функциональность в Excel. Конечно же можно переписать ее на VBA, но зачем?

Для использования функций python в Excel есть прекрасная надстройка ExcelPython. С ее помощью вы сможете вызывать функции написанные на python прямо из Excel, правда придется еще написать небольшую обертку на VBA, и все это будет показано ниже.

Итак, предположим у нас есть функция, написанная на python, которой мы хотим воспользоваться:

На вход ей подается список, состоящий из списков, это одно из условий, которое должно выполняться для работы данной функции в Excel.

Сохраним функцию в файле plugin.py и положим его в ту же директорию, где будет лежать наш excel файл, с которым мы будем работать.

Теперь установим ExcelPython. Установка происходит через запуск exe-файла и не вызывает затруднений.

Когда все приготовления выполнены, открываем тестовый файл excel и вызовем редактор VBA (Alt+F11). Для работы с вышеуказанной надстройкой необходимо ее подключить, через Tools->References, как показано на рисунке:

Ну что же, теперь можно приступить к написанию функции-обертки для нашего Python-модуля plugin.py. Выглядеть она будет следующим образом:

Итак, что же происходит в данной функции?

Для начала, с помощью PyModule , мы подключаем нужный модуль. Для этого в качестве параметров ей передается имя модуля без расширения, и путь до папки в которой он находится. На выходе работы PyModule мы получаем объект для работы с модулем.

Затем, с помощью PyCall , вызываем нужную нам функцию из указанного модуля. В качестве параметров PyCall получает следующее:

  1. Объект модуля, полученный на предыдущем шаге
  2. Имя вызываемой функции
  3. Параметры, передаваемые функции (передаются в виде списка)

Теперь, чтобы убедиться в работоспособности нашей связки, вызовем нашу свежеиспеченую функцию на листе в Excel:

Как видно из рисунка все отработало правильно.

Надо отметить, что в данном материале используется старая версия ExcelPython, и на GitHub’e автора доступна новая версия.

Заключение

В качестве заключения, надо отметить, примеры в данной статье самые простые и для более глубоко изучения данных методов, я рекомендую обратиться к
документации по нужным пакетам.

Также хочу заметить, что указанные пакеты не являются единственными и в статье опущено рассмотрение, таких пакетов как xlsxwriter для генерации excel файлов или xlwings, который может работать с Excel файлами «на лету», а также же PyXLL, который выполняет аналогичные функции ExcelPython.

Кроме этого в статье я попытался несколько обобщить разборасанный по сети материал, т.к. такие вопросы часто фигурируют на форумах и думаю некоторым будет полезно иметь, такую «шпаргалку» под рукой.

Python openpyxl

In this article, we show how to work with Excel files in Python using openpyxl library.

Advertisements Openpyxl

The is a Python library to read and write Excel 2010 xlsx/xlsm/xltx/xltm files.

Excel xlsx

In this tutorial we work with xlsx files. The xlsx is a file extension for an open XML spreadsheet file format used by Microsoft Excel. The xlsm files support macros. The xls format is a proprietary binary format while xlsx is based on Office Open XML format.

We install openpyxl with the pip tool.

Advertisements Openpyxl create new file

In the first example, we create a new xlsx file with openpyxl .

In the example, we create a new xlsx file. We write data into three cells.

We import the Workbook class from the openpyxl module. A workbook is the container for all other parts of the document.

A new workbook is created. A workbook is always created with at least one worksheet.

We get the reference to the active sheet with active property.

We write numerical data to cells A1 and A2.

We write current date to the cell A3.

We write the contents to the sample.xlsx file with the save method. Figure: New file

Openpyxl write to a cell

There are two basic ways to write to a cell: using a key of a worksheet such as A1 or D3, or using a row and column notation with the cell method.

In the example, we write two values to two cells.

Here, we assing a numerical value to the A1 cell.

In this line, we write to cell B2 with the row and column notation.

Advertisements Openpyxl append values

With the append method, we can append a group of values at the bottom of the current sheet.

In the example, we append three columns of data into the current sheet.

The data is stored in a tuple of tuples.

We go through the container row by row and insert the data row with the append method.

Openpyxl read cell

In the following example, we read the previously written data from the sample.xlsx file.

The example loads an existing xlsx file and reads three cells.

The file is opened with the load_workbook method.

We read the contents of the A1, A2, and A3 cells. In the third line, we use the cell method to get the value of A3 cell.

Advertisements Openpyxl read multiple cells

We have the following data sheet: Figure: Items

We read the data using a range operator.

In the example, we read data from two columns using a range operation.

In this line, we read data from cells A1 — B6.

The format function is used for neat output of data on the console.

Openpyxl iterate by rows

The iter_rows function return cells from the worksheet as rows.

The example iterates over data row by row.

We provide the boundaries for the iteration.

Advertisements Openpyxl iterate by columns

The iter_cols function returns cells from the worksheet as columns.

The example iterates over data column by column.

Advertisements Statistics

For the next example, we need to create a xlsx file containing numbers. For instance, we have created 25 rows of numbers in 10 columns with the RANDBETWEEN function.

In the example, we read all values from the sheet and compute some basic statistics.

The statistics module is imported to provide some statistical functions, such as median and variance.

Using the data_only option, we get the values from the cells, not the formula.

We get all the rows of cells that are not empty.

In two for loops, we form a list of integer values from the cells.

We compute and print mathematical statistics about the values. Some of the functions are built-in, others are imported with the statistics module.

Advertisements Openpyxl filter & sort data

A sheet has an auto_filter attribute, which allows to set filtering and sorting conditions.

Note that Openpyxl sets the conditions but we must apply them inside the Spreadsheet application.

In the example, we create a sheet with items and their colours. We set a filter and a sort condition.

Advertisements Openpyxl dimensions

To get those cells that actually contain data, we can use dimensions.

The example calculates the dimensions of two columns of data.

We add data to the worksheet. Note that we start adding from the third row.

The dimensions property returns the top-left and bottom-right cell of the area of non-empty cells.

Witht the min_row and max_row properties, we get the minimum and maximum row containing data.

With the min_column and max_column properties, we get the minimum and maximum column containing data.

We iterate through the data and print it to the console.

Sheets

Each workbook can have multiple sheets. Figure: Sheets

Let’s have a workbook with these three sheets.

The program works with Excel sheets.

The get_sheet_names method returns the names of available sheets in a workbook.

We get the active sheet and print its type to the terminal.

We get a reference to a sheet with the get_sheet_by_name method.

The title of the retrieved sheet is printed to the terminal.

In this example, we create a new sheet.

A new sheet is created with the create_sheet method.

The sheet names can be shown with the sheetnames attribute as well.

A sheet can be removed with the remove_sheet method.

A new sheet can be created at the specified position; in our case, we create a new sheet at position with index 0.

It is possible to change the background colour of a worksheet.

The example modifies the background colour of the sheet titled «March».

We change the tabColor property to a new colour. Figure: Background colour of a worksheet

The background colour of the third worksheet has been changed to some blue colour.

Advertisements Merging cells

Cells can be merged with the merge_cells method and unmerged with the unmerge_cells method. When we merge cells, all cells but the top-left one are removed from the worksheet.

In the example, we merge four cells: A1, B1, A2, and B2. The text in the final cell is centered.

In order to center a text in the final cell, we use the Alignment class from the openpyxl.styles module.

We merge four cells with the merge_cells method.

We get the final cell.

We set text to the merged cell and update its alignment. Figure: Merged cells

Openpyxl freeze panes

When we freeze panes, we keep an area of a worksheet visible while scrolling to another area of the worksheet.

The example freezes panes by the cell B2.

To freeze panes, we use the freeze_panes property.

Advertisements Openpyxl formulas

The next example shows how to use formulas. The openpyxl does not do calculations; it writes formulas into cells.

In the example, we calculate the sum of all values with the SUM function and style the output in bold font.

We create two columns of data.

We get the cell where we show the result of the calculation.

We write a formula into the cell.

We change the font style. Figure: Calculating the sum of values

Advertisements Openpyxl images

In the following example, we show how to insert an image into a sheet.

In the example, we write an image into a sheet.

We work with the Image class from the openpyxl.drawing.image module.

A new Image class is created. The icesid.png image is located in the current working directory.

We add a new image with the add_image method.

Advertisements Openpyxl Charts

The openpyxl library supports creation of various charts, including bar charts, line charts, area charts, bubble charts, scatter charts, and pie charts.

According to the documentation, openpyxl supports chart creation within a worksheet only. Charts in existing workbooks will be lost.

In the example, we create a bar chart to show the number of Olympic gold medals per country in London 2012.

The openpyxl.chart module has tools to work with charts.

A new workbook is created.

We create some data and add it to the cells of the active sheet.

With the Reference class, we refer to the rows in the sheet that represent data. In our case, these are the numbers of olympic gold medals.

We create a category axis. A category axis is an axis with the data treated as a sequence of non-numerical text labels. In our case, we have text labels representing names of countries.

We create a bar chart and set it data and categories.

Using legend and majorGridlines attributes, we turn off the legends and major grid lines.

Setting varyColors to True , each bar has a different colour.

A title is set for the chart.

The created chart is added to the sheet with the add_chart method. Figure: Bar chart

In this tutorial, we have worked with the openpyxl library. We have read data from an Excel file, written data to an Excel file.

Работа с Excel-файлами в Pandas — Python: Pandas

Для работы с табличными данными часто используют продукт Microsoft Excel. В таблицы Excel помещают как списки покупок, так и отчетности компаний. Благодаря распространенности данного формата разработчики создали инструменты для атоматизации обработки данных.

Pandas является средством работы с табличными данными и умеет работать с файлами формата Excel-таблиц: .xls и .xlsx. И каждый разработчик должен уметь работать с такими форматами наравне с текстовыми файлами и файлами формата json и html.

В этом уроке мы познакомимся с основными методами библиотеки Pandas для работы с табличными данными в формате Microsoft Excel: .xls и .xlsx. Мы научимся их читать и записывать. Также мы разберем работу с файлами, в которых есть несколько листов, а также форматированию данных при записи.

Обработка Excel файлов в Python

Среди форматов файлов Excel наиболее популярными являются:

  • .xls — использовался в версиях Microsoft Excel до 2007
  • .xlsx — используется во всех версиях после 2007

Для работы с обоими типами в Python есть ряд открытых библиотек:

  • xlwt
  • openpyxl
  • XlsxWriter
  • xlrd

В библиотеке Pandas не реализован свой функционал работы с Excel-файлами, но есть единый интерфейс для работы с каждой из указанных выше библиотек.

Чтобы использовать этот функционал, нужно установить указанные библиотеки в окружение, в котором установлена библиотека Pandas. Библиотеки не являются взаимозаменяемыми и дополняют друг друга — лучше установить их все.

Чтение таблиц из Excel файлов

Чтобы читать файлы в Pandas, используется метод read_excel() . Ему на вход подается путь к читаемому файлу:

В примере выше прочитан файл продаж четырех магазинов за неделю и размещен в объекте DataFrame . Pandas по умолчанию добавил столбец индексов — последовательность целых чисел от 0 до 6.

Чтобы указать, какой из столбцов является столбцом индексов, необходимо указать его номер в параметре index_col . В нашем случае это первый столбец, в котором указаны дни недели:

Если перед таблицей некоторые строки содержали записи, то попытка прочтения не приведет к ожидаемому результату. Pandas будет стараться положить данные в строках до таблицы в качестве индексов столбцов:

Для корректного прочтения необходимо пропустить некоторое количество строк при прочтении. Для этого нужно использовать параметр skiprows и указать количество пропускаемых строк:

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

Запись таблиц в Excel файл

Также в Excel-файл можно записывать результаты работы программы. Эту задачу можно разделить на два типа по сложности используемого синтаксиса:

  • Быстрая запись на один лист — записывается одна таблица, которая будет размещена на одном листе файла Excel
  • Создание файла с несколькими листами — если результаты работы программы располагаются в нескольких итоговых таблицах, то для формирования единого файла Excel с несколькими листами потребуется применить определенные правила создания

Быстрая запись на один лист

В качестве результатов работы программы используем среднее по магазинам за неделю:

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

Чтобы быстро записать данную таблицу, достаточно воспользоваться методом to_excel() . Формат файла .xls или .xlsx необходимо указать в расширении файла. Pandas автоматически определит, какой библиотекой воспользоваться для конкретного формата:

Создание файла с несколькими листами

Чтобы задать имя листа, на котором располагается таблица, необходимо указать его в параметре sheet_name . В данном примере получится лист Total:

Попробуем добавить к сформированному файлу лист итогов только для первого магазина:

Все выполнено без ошибок, но в итоговом файле листа Total нет. Чтобы перезаписать файл и удалить предыдущий, вызовем функцию to_excel() .

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

В коде выше создается экземпляр класса ExcelWriter на "движке" библиотеки xlsxwriter . Далее мы используем инициализированный экземпляр excel_writer в качестве первого параметра метода to_excel() . Конструкция with. as. позволяет безопасно работать с потоком данных и закрыть файл, даже когда возникают ошибки записи.

Чтение таблиц из Excel файлов с несколькими листами

Чтобы прочитать файл с несколькими листами, не хватит метода read_excel() , поскольку будет прочитан только первый лист из файла:

При этом можно прочитать конкретный лист, если указать его название в параметре sheet_name :

Чтобы прочитать несколько листов и не переоткрывать файл, достаточно использовать экземпляр класса ExcelFile и его метод parse() . В последнем указывается имя нужного листа и дополнительные параметры чтения, аналогичные методу read_excel() .

Данный подход для чтения файла Excel удобен, чтобы получить список всех листов. Для этого нужно посмотреть на атрибут sheet_names :

Если использовать наработки выше, можно собрать словарь из датафреймов, в которых будут располагаться все таблицы файла. Чтобы получить нужный датафрейм, нужно обратиться к словарю по ключу с соответствующим названием листа:

Форматирование таблиц

За время своего развития Excel накопил довольно мощный функционал, чтобы анализировать и презентовать данные: создание графиков, цветовая подсветка результатов по условию, настройка шрифтов и многое другое.

В примере ниже мы форматируем итоговые аналитические данные: если значения в таблице превышают порог в одиннадцать заказов, то они раскрашиваются в один цвет, иначе — в другой. Цветовая дифференциация данных удобна, чтобы быстро оценивать результаты и искать закономерности в данных:

В примере выше используются методы движка xlsxwriter . Разбор всех возможностей форматирования данных при записи выходит за рамки данного урока. Можно глубже погрузиться в данную тему через документацию с примерами по следующей ссылке.

Выводы

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *