Как узнать количество строк в excel openpyxl
Module Python OuterPyxl – это собственная библиотека для работы с файлами Excel. Мы можем прочитать файлы Excel, а также напишите файлы Excel.
1) Установка модуля OpenPyXL
Мы можем установить модуль OpenPyXL с помощью команды PIP.
Pip install openpyxl.
2) Чтение файла Excel с помощью OpenPyXL
Я создал образец файла Excel (Records.xlsx) с тремя листами. Данные присутствуют в первых двух листах.
Openpyxl пример листа Excel
Мы будем использовать этот файл Excel, чтобы посмотреть на некоторые примеры для чтения данных из листа Excel.
1. Получение названий листов из файла Excel
листы Переменная Возвращает список названий рабочих листов в рабочей книге. Имена возвращаются в порядке рабочих листов в файле Excel.
2. Получение специфического листа из файла Excel
Мы можем получить доступ к конкретному листу, используя переменную индекс с объектом Workbook.
Если вы хотите получить доступ к текущему активному листу, используйте Активный Собственность рабочей книги.
3. Чтение значения ячейки из листа Excel
Есть два способа получить значение клетки с листа Excel. Мы можем получить объект сотового элемента, используя функцию Cell (), или мы можем получить его, используя индекс клетки.
4. Общее количество рядов и столбцов в листе Excel
Мы можем получить общее количество строк и столбцов, используя max_row и max_column свойства рабочего листа.
5. Строка печати заголовка листа Excel
Функция ITER_ROWS () генерирует ячейки из рабочего листа по строке. Мы можем использовать его, чтобы получить клетки из определенного ряда.
6. Печать всех значений из столбца
7. Печать всех значений из строки
8. Диапазон чтения клеток от листа Excel
Мы можем пройти ассортимент ячеек для чтения нескольких ячеек одновременно.
9. Итализация клетки по рядам
Аргументы, переданные функции iter_rows (), создают двумерную таблицу, из которой значения прочитаны, по строке. В этом примере значения читаются между A2 и C4.
10. Итализаторы клетки по столбцам
Функция Iter_Cols () такая же, как iter_rows (), за исключением того, что значения читают столбца.
3) Написание файла Excel с помощью OpenPyXL
В этом разделе мы посмотрим несколько примеров записи файлов Excel и данных клеток.
1. Написание файла Excel с помощью OpenPyXL
OpenPyXL Написать файл Excel
2. Обновление сотовой стоимости
Мы можем либо использовать индекс ячейки или использовать объект ячейки для установки значения. Изменим некоторые значения в файле Excel, созданные в последнем примере.
Opennyxl Обновить значение ячейки
3. Добавление нескольких значений в лист Excel
Мы можем использовать функцию Append (), чтобы добавить последовательность значений в нижнюю часть рабочего листа.
Opennyxl добавить несколько строк в файл Excel
4) Удаление рядов и колонн из листа Excel
Мы можем использовать функции delete_cols () и delete_rows () для удаления столбцов и строк из листа Excel.
IDX Параметр предоставляет индекс строк и столбцов для удаления. Если мы хотим удалить несколько соседних строк и столбцов, мы можем предоставить аргумент суммы.
5. Заключение
Модуль Python OuterPyXL является идеальным выбором для работы с листами Excel. Мы также можем добавить изображения в лист Excel с помощью библиотеки подушки с ней. Но, не защищает нас против квадратичного взрыва или миллиарда смех XML атаки. Итак, если вы получаете значения от пользователя и сохраняете его, то попробуйте подтвердить и санировать его.
Электронные таблицы Excel - это интуитивно понятный и удобный способ манипулирования большими наборами данных без какой-либо предварительной технической подготовки. По этому, это один из форматов, с которым, в какой-то момент времени, вам придется иметь дело. Часто будут стоять задачи по извлечению каких-то данных из базы данных или файла логов в электронную таблицу Excel, или наоборот, преобразовывать электронную таблицу Excel в какую-либо более удобную программную форму, примеров этому масса.
Модуль openpyxl - это библиотека Python для чтения/записи форматов Office Open XML (файлов Excel 2010) с расширениями xlsx / xlsm / xltx / xltm .
Установка модуля openpyxl в виртуальное окружение.
Модуль openpyxl размещен на PyPI, поэтому установка относительно проста.
Основы работы с файлами Microsoft Excel на Python.
Создание книги Excel.
Чтобы начать работу с модулем openpyxl , нет необходимости создавать файл электронной таблицы в файловой системе. Нужно просто импортировать класс Workbook и создать его экземпляр. Рабочая книга всегда создается как минимум с одним рабочим листом, его можно получить, используя свойство Workbook.active :
Новый рабочий лист книги Excel.
Новые рабочие листы можно создавать, используя метод Workbook.create_sheet() :
Листам автоматически присваивается имя при создании. Они нумеруются последовательно (Sheet, Sheet1, Sheet2, …). Эти имена можно изменить в любое время с помощью свойства Worksheet.title :
Цвет фона вкладки с этим заголовком по умолчанию белый. Можно изменить этот цвет, указав цветовой код RRGGBB для атрибута листа Worksheet.sheet_properties.tabColor :
Рабочий лист можно получить, используя его имя в качестве ключа экземпляра созданной книги Excel:
Что бы просмотреть имена всех рабочих листов книги, необходимо использовать атрибут Workbook.sheetname . Также можно итерироваться по рабочим листам книги Excel.
Копирование рабочего листа книги Excel.
Для создания копии рабочих листов в одной книге, необходимо воспользоваться методом Workbook.copy_worksheet() :
Примечание. Копируются только ячейки (значения, стили, гиперссылки и комментарии) и определенные атрибуты рабочего листа (размеры, формат и свойства). Все остальные атрибуты книги/листа не копируются, например, изображения или диаграммы.
Поддерживается возможность копирования рабочих листов между книгами. Нельзя скопировать рабочий лист, если рабочая книга открыта в режиме только для чтения или только для записи.
Удаление рабочего листа книги Excel.
Очевидно, что встает необходимость удалить лист электронной таблицы, который уже существует. Модуль openpyxl дает возможность удалить лист по его имени. Следовательно, сначала необходимо выяснить, какие листы присутствуют в книге, а потом удалить ненужный. За удаление листов книги отвечает метод Workbook.remove() .
Доступ к ячейке и ее значению.
После того как выбран рабочий лист, можно начинать изменять содержимое ячеек. К ячейкам можно обращаться непосредственно как к ключам рабочего листа, например ws['A4'] . Это вернет ячейку на A4 или создаст ее, если она еще не существует. Значения могут быть присвоены напрямую:
Если объект ячейки присвоить переменной, то этой переменной, также можно присваивать значение:
Существует также метод Worksheet.cell() . Он обеспечивает доступ к ячейкам с непосредственным указанием значений строк и столбцов:
Примечание. При создании рабочего листа в памяти, он не содержит ячеек. Ячейки создаются при первом доступе к ним.
Важно! Из-за такого поведения, простой перебор ячеек в цикле, создаст объекты этих ячеек в памяти, даже если не присваивать им значения.
Не запускайте этот пример, поверьте на слово:
Доступ к диапазону ячеек листа электронной таблицы.
Диапазон с ячейками активного листа электронной таблицы можно получить с помощью простых срезов. Эти срезы будут возвращать итераторы объектов ячеек.
Аналогично можно получить диапазоны имеющихся строк или столбцов на листе:
Можно также использовать метод Worksheet.iter_rows() :
Точно так же метод Worksheet.iter_cols() будет возвращать столбцы:
Примечание. Из соображений производительности метод Worksheet.iter_cols() недоступен в режиме только для чтения.
Если необходимо перебрать все строки или столбцы файла, то можно использовать свойство Worksheet.rows :
или свойство Worksheet.columns :
Примечание. Из соображений производительности свойство Worksheet.columns недоступно в режиме только для чтения.
Получение только значений ячеек активного листа.
Если просто нужны значения из рабочего листа, то можно использовать свойство активного листа Worksheet.values . Это свойство перебирает все строки на листе, но возвращает только значения ячеек:
Для возврата только значения ячейки, методы Worksheet.iter_rows() и Worksheet.iter_cols() , представленные выше, могут принимать аргумент values_only :
Добавление данных в ячейки листа списком.
Модуль openpyxl дает возможность супер просто и удобно добавлять данные в конец листа электронной таблицы. Такое удобство обеспечивается методом объекта листа Worksheet.append(iterable) , где аргумент iterable - это любой итерируемый объект (список, кортеж и т.д.). Такое поведение позволяет, без костылей, переносить в электронную таблицу данные из других источников, например CSV файлы, таблицы баз данных, дата-фреймы из Pandas и т.д.
Метод Worksheet.append() добавляет группу значений в последнюю строку, которая не содержит данных.
- Если это список: все значения добавляются по порядку, начиная с первого столбца.
- Если это словарь: значения присваиваются столбцам, обозначенным ключами (цифрами или буквами).
- добавление списка: .append([‘ячейка A1’, ‘ячейка B1’, ‘ячейка C1’])
- добавление словаря:
- вариант 1: .append() , в качестве ключей используются буквы столбцов.
- вариант 2: .append() , в качестве ключей используются цифры столбцов.
Пример добавление данных из списка:
Вот и все, данные добавлены. Просто? Не просто, а супер просто!
Сохранение созданной книги в файл Excel.
Самый простой и безопасный способ сохранить книгу, это использовать метод Workbook.save() объекта Workbook :
Внимание. Эта операция перезапишет существующий файл без предупреждения.
После сохранения, можно открыть полученный файл в Excel и посмотреть данные, выбрав лист с именем NewPage .
Примечание. Расширение имени файла не обязательно должно быть xlsx или xlsm , хотя могут возникнуть проблемы с его открытием непосредственно в другом приложении. Поскольку файлы OOXML в основном представляют собой ZIP-файлы, их также можете открыть с помощью своего любимого менеджера ZIP-архивов.
Сохранение данных книги в виде потока.
Если необходимо сохранить файл в поток, например, при использовании веб-приложения, такого как Flask или Django, то можно просто предоставить tempfile.NamedTemporaryFile() :
Можно указать атрибут template=True , чтобы сохранить книгу как шаблон:
Примечание. Атрибут wb.template по умолчанию имеет значение False , это означает - сохранить как документ.
Внимание. Следующее не удастся:
Загрузка документа XLSX из файла.
Чтобы открыть существующую книгу Excel необходимо использовать функцию openpyxl.load_workbook() :
Есть несколько флагов, которые можно использовать в функции openpyxl.load_workbook() .
Объект Worksheet представляет собой рабочий лист, который в электронных таблицах Excel служит контейнером 2-го уровня.
Не создавайте рабочие листы самостоятельно, для этого используйте Workbook.create_sheet() . При создании новой рабочей книги средствами модуля openpyxl , по умолчанию уже создается один рабочий лист, доступ к которому можно получить через свойство Workbook.active .
Содержание:
- Worksheet.active_cell имя активной ячейки,
- Worksheet.add_chart() добавляет объект диаграммы ,
- Worksheet.add_data_validation() добавляет объект проверки данных,
- Worksheet.add_image() добавляет изображение,
- Worksheet.add_table() добавляет объект таблицы,
- Worksheet.append() добавляет группу значений в последнюю строку,
- Worksheet.calculate_dimension() возвращают минимальный диапазон ячеек с данными,
- Worksheet.cell() возвращает объект ячейки,
- Worksheet.columns генератор всех объектов ячеек с данными по столбцам,
- Worksheet.column_dimensions информация о свойствах отображения столбца,
- Worksheet.delete_cols() удаляет столбец или столбцы,
- Worksheet.delete_rows() удаляет строку или строки,
- Worksheet.freeze_panes фиксирует строки и колонки,
- Worksheet.insert_cols() вставляет столбец или столбцы,
- Worksheet.insert_rows() вставляет строку или строки,
- Worksheet.iter_cols() читает объекты ячеек,
- Worksheet.iter_rows() читает объекты строк,
- Worksheet.max_column максимальный индекс столбца с данными,
- Worksheet.max_row максимальный индекс строки с данными,
- Worksheet.merge_cells устанавливает слияние в диапазоне ячеек,
- Worksheet.min_column минимальный индекс столбца,
- Worksheet.min_row минимальный индекс строки,
- Worksheet.move_range() перемещает диапазон ячеек,
- Worksheet.print_area устанавливает область печати,
- Worksheet.print_title_cols устанавливает колонки, которые печатаются на каждой странице,
- Worksheet.print_title_rows устанавливает строки, которые печатаются на каждой странице,
- Worksheet.row_dimensions информация о свойствах отображения строки,
- Worksheet.rows генератор всех объектов ячеек с данными по строкам,
- Worksheet.set_printer_settings() задает параметры принтера,
- Worksheet.tables все объекты таблиц текущего листа,
- Worksheet.unmerge_cells() удаляет слияние ячеек,
- Worksheet.values генератор всех значений ячеек по строкам.
Worksheet.active_cell :
Свойство Worksheet.active_cell возвращает имя активной ячейки листа Worksheet .
Worksheet.add_chart(chart, anchor=None) :
Метод Worksheet.add_chart() добавляет объект диаграммы chart на текущий рабочий лист. При необходимости можно указать ячейку anchor для привязки к ней диаграммы. Диаграмма привязывается к левому верхнему углу ячейки.
Worksheet.add_data_validation(data_validation) :
Метод Worksheet.add_data_validation() добавляет на рабочий лист электронной таблицы объект проверки данных data_validation .
Объект проверки данных определяет тип применяемой проверки данных и ячейку или диапазон ячеек, к которым она должна применяться.
Worksheet.add_image(img, anchor=None) :
Метод Worksheet.add_image() добавляет изображение img на лист электронной таблицы.
При желании можно указать ячейку anchor для привязки изображения. Изображение привязывается к левому верхнему углу ячейки.
Worksheet.add_table(table) :
Метод Worksheet.add_table() добавляет объект таблицы table на лист электронной таблицы.
Объект таблицы рабочего листа представляет собой ссылку на группу ячеек, что облегчает работу с данными, если на одном листе представлены несколько таблиц.
Перед добавлением объекта таблицы рабочего листа Table , необходимо сначала проверить наличие имени таблицы displayName в определенных именах и других таблицах рабочего листа во избежании получения исключения.
Worksheet.append(iterable) :
Метод Worksheet.append() добавляет группу значений в последнюю строку, которая не содержит данных.
- Если это список: все значения добавляются по порядку, начиная с первого столбца.
- Если это словарь: значения присваиваются столбцам, обозначенным ключами (цифрами или буквами).
- добавление списка: .append([‘ячейка A1’, ‘ячейка B1’, ‘ячейка C1’])
- добавление словаря:
- вариант 1: .append() , в качестве ключей используются буквы столбцов.
- вариант 2: .append() , в качестве ключей используются цифры столбцов.
Пример добавление данных из списка:
Вот и все, данные добавлены.
Worksheet.calculate_dimension()
Worksheet.dimensions :Метод Worksheet.calculate_dimension() и свойство Worksheet.dimensions возвращают минимальный диапазон для всех ячеек текущего рабочего листа, которые содержат данные (например, ‘A1:M24’).
Worksheet.cell(row, column, value=None) :
Метод Worksheet.cell() возвращает объект ячейки Cell на основе заданных координат.
- row - индекс строки ячейки, целое число.
- column - индекс столбца ячейки, целое число.
- value - значение ячейки, может быть число или дата/время или строка или bool или None .
Важно! Ячейки создаются при первом доступе к ним. Из-за такого поведения, простой перебор ячеек в цикле, создаст объекты этих ячеек в памяти, даже если не присваивать им значения.
Этот код создаст в памяти 100x100=10000 пустых объектов ячеек, просто так израсходовав оперативную память.
Worksheet.columns :
Свойство Worksheet.columns создает генератор всех объектов ячеек текущего рабочего листа, в которых есть данные, по столбцам. Дополнительно смотрите метод Worksheet.iter_cols() .
Worksheet.column_dimensions :
Свойство Worksheet.column_dimensions содержит информацию о свойствах отображения столбцов и представляет собой словарный объект. Ключами объекта служат буквы столбцов рабочего листа. Например, что бы обратиться к группе ячеек определенного столбца, необходимо указать букву этого столбца: Worksheet.column_dimensions['D'] .
Этот словарный объект имеет полезные атрибуты .width при помощи которого можно изменять ширину столбца.
Пример изменения высоты строки и ширины ячейки:
Примечание: в коде так же используется свойство рабочего листа электронной таблицы Worksheet.row_dimensions .
Так же свойство Worksheet.column_dimensions имеет метод .group(start, end=None, outline_level=1, hidden=False) , который разрешает группировку ряда последовательных строк или столбцов вместе, что бы свернуть/скрыть или показать их.
Принимаемые аргументы .group() :
- start : первый столбец для группировки (обязательно).
- end=None : последний столбец для группировки (необязательно).
- outline_level=1 : уровень вложенности сворачивания. Например можно свернуть с 1 по 10 строки с уровнем 1, а потом свернуть строки с 5 по 10 с уровнем 2. В этом случае, при открытии документа появиться возможность показать/развернуть скрытые строки в 2 этапа. Так же это работает и с колонками.
- hidden=False : должна ли группа быть свернута/скрыта на рабочем листе.
Пример сворачивания группы колонок и строк:
Worksheet.delete_cols(idx, amount=1) :
Метод Worksheet.delete_cols() удаляет столбец или столбцы из col==idx , где idx числовой индекс столбца. Аргумент amount - количество удаляемых столбцов. По умолчанию удаляется один столбец.
Например, чтобы удалить столбцы в диапазоне F:H необходимо вызвать ws.delete_cols(6, 3) .
Worksheet.delete_rows(idx, amount=1) :
Метод Worksheet.delete_rows() удаляет строку или строки из row==idx , где idx числовой индекс строки. Аргумент amount - количество удаляемых строк. По умолчанию удаляется одна строка.
Например, чтобы удалить строки в диапазоне 5:8 необходимо вызвать ws.delete_rows(5, 3) .
Worksheet.freeze_panes :
Свойство Worksheet.freeze_panes фиксирует строки и колонки находящиеся выше и левее указанной ячейки. Другими словами, это свойство фиксирует все что выше и левее указанной ячейки.
Например, если указать ws.freeze_panes = 'A3' , то это заставит программу Excel зафиксировать только две верхние строки от прокрутки по вертикали. А если указать ws.freeze_panes = 'B3' , то это зафиксирует две верхние строки от прокрутки по вертикали и колонку 'A' от прокрутки по горизонтали.
Worksheet.insert_cols(idx, amount=1) :
Метод Worksheet.insert_cols() вставляет столбец или столбцы перед col==idx , где idx числовой индекс столбца. Аргумент amount - количество вставляемых столбцов. По умолчанию вставляется один столбец.
Например, чтобы вставить 3 столбца перед существующим столбцом D необходимо вызвать ws.insert_cols(4, 3) .
Worksheet.insert_rows(idx, amount=1) :
Метод Worksheet.insert_rows() вставляет строку или строки перед row==idx , где idx числовой индекс строки. Аргумент amount - количество вставляемых строк. По умолчанию вставляется одна строка.
Например, чтобы вставить 3 строки перед существующей 7-ой строкой необходимо вызвать ws.insert_rows(7, 3) .
Worksheet.iter_cols(min_col=None, max_col=None, min_row=None, max_row=None, values_only=False) :
Метод Worksheet.iter_cols() читает объекты ячеек на рабочем листе по столбцам (только те, которые имеют данные). Диапазон итерации задается с помощью индексов строк и столбцов. Возвращает генератор объектов из прочитанных ячеек.
- Если индексы не указаны, то диапазон начинается с ячейки A1 .
- Если на листе нет ячеек с данными, то будет возвращен пустой кортеж.
- min_col - наименьший индекс столбца.
- min_row - наименьший индекс строки.
- max_col - наибольший индекс столбца.
- max_row - наибольший индекс строки.
- values_only - следует ли возвращать только значения ячеек.
Примечание. Из соображений производительности метод Worksheet.iter_cols() недоступен в режиме только для чтения.
Worksheet.iter_rows(min_row=None, max_row=None, min_col=None, max_col=None, values_only=False) :
Метод Worksheet.iter_rows() читает объекты ячеек на рабочем листе по строкам (только те, которые имеют данные). Диапазон итерации задается с помощью индексов строк и столбцов. Возвращает генератор объектов из прочитанных ячеек.
- Если индексы не указаны, то диапазон начинается с ячейки A1 .
- Если на листе нет ячеек с данными, то будет возвращен пустой кортеж.
- min_col - наименьший индекс столбца.
- min_row - наименьший индекс строки.
- max_col - наибольший индекс столбца.
- max_row - наибольший индекс строки.
- values_only - следует ли возвращать только значения ячеек.
Worksheet.max_column :
Свойство Worksheet.max_column возвращает максимальный индекс столбца, содержащий данные. Индексы столбцов начинаются с 1, а не с 0, как в списке.
Worksheet.max_row :
Свойство Worksheet.max_row возвращает максимальный индекс строки, содержащий данные. Индексы строк начинаются с 1, а не с 0, как в списке.
Worksheet.merge_cells(range_string=None, start_row=None, start_column=None, end_row=None, end_column=None) :
Свойство Worksheet.merge_cells устанавливает слияние в диапазоне ячеек range_string . Диапазон range_string - это диапазон ячеек, который задается строкой, например, 'A1:E1' .
Диапазон ячеек, также можно установить при помощи аргументов start_row , start_column , end_row и end_column .
Worksheet.min_column :
Свойство Worksheet.min_column возвращает минимальный индекс столбца, содержащий данные. Индексы столбцов начинаются с 1, а не с 0, как в списке.
Worksheet.min_row :
Свойство Worksheet.min_row возвращает минимальный индекс строки, содержащий данные. Индексы строк начинаются с 1, а не с 0, как в списке.
Worksheet.move_range(cell_range, rows=0, cols=0, translate=False) :
Метод Worksheet.move_range() перемещает диапазон ячеек cell_range на количество строк rows и/или столбцов cols :
- вниз, если rows > 0 , и вверх, если rows < 0 ,
- вправо, если cols > 0 , и влево, если cols < 0 .
Существующие ячейки будут перезаписаны. Формулы и ссылки обновляться не будут.
Это приведет к перемещению ячеек в диапазоне ячеек D4:F10 вверх на одну строку и вправо на два столбца. Ячейки будут перезаписаны всеми существующими ячейками.
Если ячейки содержат формулы, то openpyxl может транслировать их, но этот функционал умолчанию отключен. Кроме того, будут транслированы только формулы в самих ячейках. Ссылки на ячейки из других ячеек или определенные имена обновляться не будут. Для этого можно использовать переводчик формул синтаксического анализа:
Это приведет к перемещению относительных ссылок в формулах в диапазоне на одну строку и один столбец.
Worksheet.print_area :
Свойство Worksheet.print_area возвращает/устанавливает область печати "по умолчанию" для текущего рабочего листа электронной таблицы. Если область печати не задана, то возвращается None .
Для установки области печати "по умолчанию", необходимо указать диапазон, например 'A1:D4' , или список диапазонов.
Worksheet.print_title_cols :
Свойство Worksheet.print_title_cols устанавливает колонки, которые должны быть напечатаны слева на каждой странице, например: 'A:C' .
Worksheet.print_title_rows :
Свойство Worksheet.print_title_rows устанавливает строки, которые должны быть напечатаны вверху каждой страницы, например, '1:3' .
Worksheet.rows :
Свойство Worksheet.rows создает генератор всех объектов ячеек текущего рабочего листа, в которых есть данные, по строкам. Дополнительно смотрите метод Worksheet.iter_rows() .
Worksheet.row_dimensions :
Свойство Worksheet.row_dimensions содержит информацию о свойствах отображения строк и представляет собой словарный объект. Ключами объекта служат номера строк.
Этот словарный объект имеет полезные атрибут .height при помощи которого можно менять высоту строки и метод .group , который служит для группировки строк, для дальнейшего их сворачивания.
Worksheet.set_printer_settings(paper_size, orientation) :
Метод Worksheet.set_printer_settings() устанавливает размер бумаги paper_size и ориентацию страницы orientation по умолчанию для текущего листа электронной таблицы.
Аргумент paper_size может принимать значения:
- Worksheet.PAPERSIZE_A3 = '8' .
- Worksheet.PAPERSIZE_A4= '9' .
- Worksheet.PAPERSIZE_A4_SMALL= '10' .
- Worksheet.PAPERSIZE_A5= '11' .
- Worksheet.PAPERSIZE_EXECUTIVE= '7' .
- Worksheet.PAPERSIZE_LEDGER= '4' .
- Worksheet.PAPERSIZE_LEGAL= '5' .
- Worksheet.PAPERSIZE_LETTER= '1' .
- Worksheet.PAPERSIZE_LETTER_SMALL= '2' .
- Worksheet.PAPERSIZE_STATEMENT= '6' .
- Worksheet.PAPERSIZE_TABLOID= '3' .
Ориентация страницы, так же настраивается при помощи констант объекта Worksheet
- Worksheet.ORIENTATION_LANDSCAPE= 'landscape' .
- Worksheet.ORIENTATION_PORTRAIT= 'portrait' .
Примечание: В коде не обязательно использовать имена констант, можно напрямую использовать их значения.
Worksheet.tables :
Свойство Worksheet.tables возвращает все объекты таблиц текущего листа документа XLSX, добавленные методом Worksheet.add_table() .
Worksheet.unmerge_cells(range_string=None, start_row=None, start_column=None, end_row=None, end_column=None) :
Метод Worksheet.unmerge_cells() удаляет слияние ячеек в диапазоне range_string . Аргумент range_string - это диапазон ячеек, который ранее был объединен при помощи метода Worksheet.merge_cells() и задается строкой, например, 'A1:E1' .
Диапазон ячеек, также можно установить при помощи аргументов start_row , start_column , end_row и end_column .
Worksheet.values :
Свойство Worksheet.values создает генератор, который содержит все значения ячеек, которые имеются на текущем листе по строкам.
Этот код напечатает все значения ячеек текущего рабочего листа, которые имеют какие-то данные.
Объект ячейки Cell управляет отдельными ячейками электронной таблицы, а также описывает ее свойства. Класс Cell() должен знать свое значение и тип, параметры отображения и любые другие функции ячейки Excel.
Не создавайте объекты ячейки самостоятельно. Доступ к произвольной ячейке можно получить, обратившись к объекту рабочего листа Worksheet как к словарю, при этом ключом будет служить строка с именем ячейки, например ws['A1'] . Это вернет ячейку на 'A4' или создаст ее, если она еще не существует. Значения могут быть присвоены напрямую:
Для доступа к ячейке с использованием индексов столбцов и строк, можно использовать метод Worksheet.cell() .
Пример работы с объектом ячейки через переменную:
Содержание:
Cell.base_date :
Свойство Cell.base_date содержит базовый класс обработки даты. По умолчанию это datetime .
Cell.col_idx :
Атрибут Cell.col_idx возвращает числовой индекс столбца. Нумерация столбцов в модуле openpyxl начинается с 1, а не с 0 как в списке.
Cell.column :
Атрибут Cell.column возвращает номер столбца этой ячейки. Нумерация столбцов в модуле openpyxl начинается с 1, а не с 0 как в списке.
Cell.column_letter :
Атрибут Cell.column_letter возвращает букву столбца ячейки.
Если назначить один и тот же комментарий нескольким ячейкам, то openpyxl автоматически создаст копии.
Cell.coordinate :
Атрибут Cell.coordinate возвращает координаты этой ячейки.
Cell.encoding :
Атрибут Cell.encoding возвращает кодировку этой ячейки.
Cell.hyperlink :
Свойство Cell.hyperlink устанавливает целевую гиперссылку.
Некоторые говорят что код, представленный выше - не работает. В таком случае установить ссылку в ячейку можно используя встроенную в Excel функцию '=HYPERLINK(link, linkName)`, например:
Cell.is_date :
Свойство Cell.is_date возвращает True , если значение отформатировано как дата.
Cell.offset(row=0, column=0) :
Метод Cell.offset() возвращает объект ячейки, смещенный на кол-во строк row и столбцов column относительно этой ячейки.
- row - количество смещения строк.
- column - количество смещения столбцов.
Cell.parent :
Свойство Cell.parent возвращает объект рабочего листа, на котором расположена эта ячейка.
Cell.row :
Свойство Cell.row возвращает номер строки этой ячейки. Нумерация строк в модуле openpyxl начинается с 1, а не с 0 как в списке.
Cell.value :
Свойство Cell.value возвращает или устанавливает значение, хранящееся в ячейке.
Ячейка может хранить следующие значения: str , float , int или datetime.datetime .
Cell.alignment :
Свойство Cell.alignment отвечает за выравнивание значения в ячейке. Значение должно быть объектом Alignment() .
Cell.font :
Свойство Cell.font задает стиль шрифта в ячейке (имя, высота, цвет и т.д.). Значение должно быть объектом Font() .
Cell.border :
Свойство Cell.border задает стиль оформления границ ячейки. Значение должно быть объектом Border() .
Пример стилизации границ одной ячейки:
Cell.fill :
Свойство Cell.fill задает цвет заливки ячейки. Значение должно быть объектом PatternFill() .
Деловой мир использует Microsoft Office Отказ Их решение для программного решения для электронного таблица, Microsoft Excel особенно популярен. Excel используется для хранения табличных данных, создания отчетов, тенденций графика и многое другое. Перед погружением в работу с Excel с Python давайте уточним особую терминологию:
- Электронная таблица или рабочая тетрадь – сам файл (.xls или .xlsx).
- Рабочий лист или лист – один лист контента в рабочей книге. Электронные таблицы могут содержать несколько рабочих листов.
- Столбец – вертикальная линия данных, помеченная буквами, начиная с «A».
- Ряд – горизонтальная линия данных, помеченная цифрами, начиная с 1.
- Клетки – сочетание колонны и ряда, как “A1”.
В этой статье вы будете использовать Python для работы с электронными таблицами Excel. Вы узнаете о следующем:
- Пакеты Python Excel
- Получение листов из рабочей книги
- Чтение ячейки данных
- Итализация по рядам и колонкам
- Написание электронных таблиц Excel
- Добавление и удаление листов
- Добавление и удаление строк и столбцов
Excel используется большинством компаний и университетов. Его можно использовать во многих отношениях и улучшаться с использованием Visual Basic для приложений (VBA). Тем не менее, VBA является своего рода Clunky – почему приятно участвовать, как использовать Excel с Python.
Давайте узнаем, как работать с электронными таблицами Microsoft Excel, используя язык программирования Python сейчас!
Пакеты Python Excel
Вы можете использовать Python для создания, чтения и записи электронных таблиц Excel. Тем не менее, стандартная библиотека Python не имеет поддержки для работы с Excel; Для этого вам нужно будет установить 3-й партийный пакет. Самый популярный – Openpyxl Отказ Вы можете прочитать его документацию здесь:
Opennyxl не является вашим единственным выбором. Есть несколько других пакетов, которые поддерживают Microsoft Excel:
- XLRD – для чтения старых документов Excel (.xls)
- XLWT – для написания старых документов Excel (.xls)
- xlwings – работает с новыми форматами Excel и имеет макросъемки
Пару лет назад первые два раньше были самыми популярными библиотеками для использования с документами Excel. Однако автор этих пакетов перестал их поддерживать. Упаковка XLWINGS имеет много обещаний, но не работает на всех платформах и требует, чтобы Microsoft Excel установлена.
Вы будете использовать opennyxl в этой статье, потому что она активно разработана и поддерживается. OpenPyXL не требует установки Microsoft Excel, и он работает на всех платформах.
Вы можете установить OpenPyXL, используя Пип :
После завершения установки давайте узнаем, как использовать OpenPyXL, чтобы прочитать электронную таблицу Excel!
Получение листов из рабочей книги
Первый шаг – найти файл Excel для использования с OuterPyxl. Есть books.xlsx Файл, который предусмотрен для вас в репозитории Github в этой книге. Вы можете скачать его, перейдем к этому URL:
Не стесняйтесь использовать свой собственный файл, хотя вывод из вашего собственного файла не будет соответствовать выходу образца в этой книге.
Следующим шагом является запись некоторых кода, чтобы открыть электронную таблицу. Для этого создайте новый файл с именем Open_Workbook.py И добавьте этот код к нему:
В этом примере вы импортируете load_workbook () от openpyxl а потом создайте Open_Workook () который принимает путь к вашей электронной таблице Excel. Далее вы используете load_workbook () создать opennyxl.workbook.workbook.workbook объект. Этот объект позволяет получить доступ к листам и ячейке в вашей электронной таблице. И да, у него действительно есть двойная Рабочая книга в его названии. Это не опечатка!
Остальные Open_Workook () Функция демонстрирует, как распечатать все текущие определенные листы в вашей электронной таблице, получите текущий активный лист и распечатайте название этого листа.
Когда вы запускаете этот код, вы увидите следующий вывод:
Теперь, когда вы знаете, как получить доступ к листам в электронной таблице, вы готовы перейти к доступ к данным клетки!
Чтение ячейки данных
Когда вы работаете с Microsoft Excel, данные хранятся в ячейках. Вам нужен способ получить доступ к теми ячейкам из Python, чтобы иметь возможность извлечь эти данные. OpenPyXL делает этот процесс прямо вперед.
Создать новый файл с именем Workbook_cells.py И добавьте этот код к нему:
Этот код загрузит файл Excel в рабочей книге OuterPyXL. Вы будете захватывать активный лист, а затем распечатать его Название и пара разных клеточных ценностей. Вы можете получить доступ к ячейке, используя объект листа, а затем квадратные скобки с именем столбца и номером строки внутри него. Например, лист ["A2"] Получите вам ячейку в столбце «А», строка 2. Чтобы получить значение этой ячейки, вы используете ценность атрибут.
Примечание: Этот код использует новую функцию, которая была добавлена в F-струны в Python 3.8. Если вы запустите это с более ранней версией, вы получите ошибку.
Когда вы запускаете этот код, вы получите этот вывод:
Вы можете получить дополнительную информацию о ячейке, используя некоторые другие атрибуты. Добавьте следующую функцию в свой файл и обновите условный оператор в конце, чтобы запустить его:
В этом примере вы используете ряд и Колонка атрибуты клетки Объект для получения информации о строке и столбце. Обратите внимание, что столбец «А» отображается на «1», «B» на «2», Etcetera. Если бы вы были повторить документ Excel, вы можете использовать координировать атрибут, чтобы получить имя ячейки.
Когда вы запускаете этот код, вывод будет выглядеть так:
Говоря о итерации, давайте узнаем, как это сделать следующим!
Итализация по рядам и колонкам
Иногда вам нужно будет повторять все электронные таблицы или порции электронной таблицы Excel. OpenPyXL позволяет сделать это несколькими разными способами. Создать новый файл с именем iTerating_over_cells.py и добавьте следующий код:
Здесь вы загружаете электронную таблицу, а затем закрутите все клетки в столбце «А». Для каждой клетки вы распечатаете клетки объект. Вы можете использовать некоторые из атрибутов ячейки, о которых вы узнали в предыдущем разделе, если вы хотите отформатировать вывод более гранулярно.
Это то, что вы получаете от выполнения этого кода:
Вывод усечен, поскольку он будет распечатан довольно много ячейки по умолчанию. OpeAnPyXL предоставляет другие способы повторения рядов и столбцов, используя Iter_rows () и ITER_COLS () Функции. Эти методы принимают несколько аргументов:
- min_row.
- max_row.
- min_col.
- Max_Col.
Вы также можете добавить на values_only Аргумент, который говорит OwnerPyXL для возврата значения ячейки вместо элемента клеток. Продолжайте и создайте новый файл с именем iTerating_over_cell_values.py И добавьте этот код к нему:
Этот код демонстрирует, как вы можете использовать Iter_rows () Итерацию по рядам в электронной таблице Excel и распечатайте значения этих строк. Когда вы запускаете этот код, вы получите следующий вывод:
Вывод – это кортеж Python, который содержит данные в каждом столбце. В этот момент вы узнали, как открывать электронные таблицы и чтение данных – как из определенных ячеек, а также через итерацию. Теперь вы готовы узнать, как использовать OpenPyXL в создать Экспертные таблицы!
Написание электронных таблиц Excel
Создание электронной таблицы Excel с использованием OpenPyXL не принимает много кода. Вы можете создать электронную таблицу, используя Workbook () класс. Продолжайте и создайте новый файл с именем write_hello.py И добавьте этот код к нему:
Вот вы создали Workbook () и получить активный лист. Затем вы устанавливаете первые три ряда в столбцу «A» на разные строки. Наконец, вы звоните Сохранить () и пропустите это путь чтобы сохранить новый документ. Поздравляю! Вы только что создали электронную таблицу Excel с Python.
Давайте узнаем, как добавить и удалить листы в вашей рабочей книге рядом!
Добавление и удаление листов
Многие люди любят организовывать свои данные на нескольких рабочих таблицах в рабочей книге. OpenPyxl поддерживает возможность добавлять новые листы в Workbook () объект через его create_sheet () метод.
Создать новый файл с именем crosse_shiets.py И добавьте этот код к нему:
Здесь вы используете create_sheet () дважды, чтобы добавить две новые рабочие листы к рабочей книге. Второй пример показывает, как установить заголовок листа и при каком индексе вставить лист. Аргумент индекс = 1 означает, что рабочий лист будет добавлен после первого существующего листа, поскольку они проиндексируются, начиная с 0 Отказ
Когда вы запускаете этот код, вы увидите следующий вывод:
Вы можете увидеть, что новые простыни были добавлены пошаговые к вашей рабочей книге. После сохранения файла вы можете убедиться, что есть несколько рабочих листов, открывая Excel или другое приложение для совместимого Excel.
После этого автоматического процесса создания рабочего листа вы вдруг получили слишком много листов, поэтому давайте избавимся от некоторых. Есть два способа удалить лист. Идти вперед и создать delete_shiets.py Чтобы увидеть, как использовать Python’s дель Ключевое слово для удаления рабочих листов:
Этот код создаст новую рабочую книгу, а затем добавить две новые рабочие листы к нему. Затем он использует Python’s дель Ключевое слово для удаления рабочая тетрадь [«второй лист»] Отказ Вы можете убедиться, что он работал, как ожидалось, посмотрев на распечатка списка листов до и после дель команда:
Другой способ удалить лист из рабочей книги – использовать Удалить () метод. Создайте новый файл под названием Remove_shiets.py И введите этот код, чтобы узнать, как это работает:
На этот раз вы держите ссылку на первый рабочий лист, который вы создаете, назначив результат к Лист1 Отказ Затем вы удалите его позже в коде. В качестве альтернативы, вы также можете удалить этот лист, используя тот же синтаксис, как и раньше, как это:
Независимо от того, какой метод вы выберете для удаления рабочего листа, выход будет одинаковым:
Теперь давайте перейдем и узнаем, как вы можете добавить и удалить строки и столбцы.
Добавление и удаление строк и столбцов
OpenPyXL имеет несколько полезных методов, которые вы можете использовать для добавления и удаления строк и столбцов в вашей электронной таблице. Вот список четырех методов, о которых вы узнаете в этом разделе:
- .insert_rows ()
- .delete_rows ()
- .insert_cols ()
- .delete_cols ()
Каждый из этих методов может принимать два аргумента:
- IDX – индекс для вставки строки или столбца
- сумма – количество рядов или столбцов для добавления
Чтобы увидеть, как это работает, создайте файл с именем insert_demo.py . и добавьте следующий код:
Здесь вы создаете лист и вставьте новый столбец перед столбцом «A». Столбцы индексируются с 1 при контрастности, рабочие листы начнут на 0. Это эффективно перемещает все клетки в столбце A в столбец B. Затем вы вставляете два новых строки, начиная с рядка 2.
Теперь, когда вы знаете, как вставлять столбцы и строки, пришло время узнать, как их удалить.
Чтобы узнать, как удалить столбцы или строки, создайте новый файл с именем delete_demo.py и добавить этот код:
Этот код создает текст в нескольких клетках, а затем удаляет столбец A используя delete_cols () Отказ Это также удаляет два строках, начиная с 2-го ряда через delete_rows () Отказ Возможность добавления и удаления колонн и строки может быть весьма полезным, когда речь идет о организации ваших данных.
Обертывание
Благодаря широкому использованию Excel во многих отраслях отраслями является чрезвычайно полезным навыком, способным взаимодействовать с файлами Excel с помощью Python. В этой статье вы узнали о следующем:
- Пакеты Python Excel
- Получение листов из рабочей книги
- Чтение ячейки данных
- Итализация по рядам и колонкам
- Написание электронных таблиц Excel
- Добавление и удаление листов
- Добавление и удаление строк и столбцов
OpenPyXL может сделать даже больше, чем было покрыто здесь. Например, вы можете добавить формулы в ячейки, изменить шрифты и применить другие типы стилей к ячейкам с помощью OpenPyXL. Прочитайте документацию и попробуйте использовать OpenPyXL на некоторых собственных таблицах, чтобы вы могли обнаружить его полную мощность.
Читайте также: