Рубрики
Без рубрики

OpenPyXL: модуль Python для чтения / записи файлов Excel

Module Python OuterPyxl – это собственная библиотека для работы с файлами Excel. Мы можем прочитать файлы Excel, а также напишите файлы Excel. 1) Установка модуля OpenPyXL

Автор оригинала: Pankaj Kumar.

Module Python OuterPyxl – это собственная библиотека для работы с файлами Excel. Мы можем прочитать файлы Excel, а также напишите файлы Excel.

1) Установка модуля OpenPyXL

Мы можем установить модуль OpenPyXL с помощью команды PIP.

$ pip install openpyxl

Pip install openpyxl.

2) Чтение файла Excel с помощью OpenPyXL

Я создал образец файла Excel (Records.xlsx) с тремя листами. Данные присутствуют в первых двух листах.

Openpyxl пример листа Excel

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

1. Получение названий листов из файла Excel

import openpyxl

excel_file = openpyxl.load_workbook('records.xlsx')

# sheet names
print(excel_file.sheetnames)

Выход:

['Employees', 'Cars', 'Numbers']

листы Переменная Возвращает список названий рабочих листов в рабочей книге. Имена возвращаются в порядке рабочих листов в файле Excel.

2. Получение специфического листа из файла Excel

Мы можем получить доступ к конкретному листу, используя переменную индекс с объектом Workbook.

employees_sheet = excel_file['Employees']

print(type(excel_file))
print(type(employees_sheet))

currently_active_sheet = excel_file.active

Выход:



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

3. Чтение значения ячейки из листа Excel

Есть два способа получить значение клетки с листа Excel. Мы можем получить объект сотового элемента, используя функцию Cell (), или мы можем получить его, используя индекс клетки.

cell_obj = employees_sheet.cell(row=1, column=1)
print(type(cell_obj))
print(f'Employees[A1]={cell_obj.value}')

# second way
print(f'Employees[A1]={employees_sheet["A1"].value}')

Выход:


Employees[A1]=EmpID
Employees[A1]=EmpID

4. Общее количество рядов и столбцов в листе Excel

Мы можем получить общее количество строк и столбцов, используя max_row и max_column свойства рабочего листа.

print(f'Total Rows = {employees_sheet.max_row} and Total Columns = {employees_sheet.max_column}')

Выход:

Total Rows = 4 and Total Columns = 3

5. Строка печати заголовка листа Excel

header_cells_generator = employees_sheet.iter_rows(max_row=1)

for header_cells_tuple in header_cells_generator:
    for i in range(len(header_cells_tuple)):
        print(header_cells_tuple[i].value)

Выход:

EmpID
EmpName
EmpRole

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

6. Печать всех значений из столбца

for x in range(1, employees_sheet.max_row+1):
    print(employees_sheet.cell(row=x, column=1).value)

Выход:

EmpID
1
2
3

7. Печать всех значений из строки

for x in range(1, employees_sheet.max_column+1):
    print(employees_sheet.cell(row=2, column=x).value)

Выход:

1
Pankaj
CEO

8. Диапазон чтения клеток от листа Excel

Мы можем пройти ассортимент ячеек для чтения нескольких ячеек одновременно.

cells = employees_sheet['A2':'C3']

for id, name, role in cells:
    print(f'Employee[{id.value}, {name.value}, {role.value}]')

Выход:

Employee[1, Pankaj, CEO]
Employee[2, David Lee, Editor]

9. Итализация клетки по рядам

for row in employees_sheet.iter_rows(min_row=2, min_col=1, max_row=4, max_col=3):
    for cell in row:
        print(cell.value, end="|")
    print("")

Выход:

1|Pankaj|CEO|
2|David Lee|Editor|
3|Lisa Ray|Author|

Аргументы, переданные функции iter_rows (), создают двумерную таблицу, из которой значения прочитаны, по строке. В этом примере значения читаются между A2 и C4.

10. Итализаторы клетки по столбцам

for col in employees_sheet.iter_cols(min_row=2, min_col=1, max_row=4, max_col=3):
    for cell in col:
        print(cell.value, end="|")
    print("")

Выход:

1|2|3|
Pankaj|David Lee|Lisa Ray|
CEO|Editor|Author|

Функция Iter_Cols () такая же, как iter_rows (), за исключением того, что значения читают столбца.

3) Написание файла Excel с помощью OpenPyXL

В этом разделе мы посмотрим несколько примеров записи файлов Excel и данных клеток.

1. Написание файла Excel с помощью OpenPyXL

from openpyxl import Workbook
import datetime

excel_file = Workbook()
excel_sheet = excel_file.create_sheet(title='Holidays 2019', index=0)

# creating header row
excel_sheet['A1'] = 'Holiday Name'
excel_sheet['B1'] = 'Holiday Description'
excel_sheet['C1'] = 'Holiday Date'

# adding data
excel_sheet['A2'] = 'Diwali'
excel_sheet['B2'] = 'Biggest Indian Festival'
excel_sheet['C2'] = datetime.date(year=2019, month=10, day=27).strftime("%m/%d/%y")

excel_sheet['A3'] = 'Christmas'
excel_sheet['B3'] = 'Birth of Jesus Christ'
excel_sheet['C3'] = datetime.date(year=2019, month=12, day=25).strftime("%m/%d/%y")

# save the file
excel_file.save(filename="Holidays.xlsx")

Выход:

OpenPyXL Написать файл Excel

2. Обновление сотовой стоимости

Мы можем либо использовать индекс ячейки или использовать объект ячейки для установки значения. Изменим некоторые значения в файле Excel, созданные в последнем примере.

import openpyxl

excel_file = openpyxl.load_workbook('Holidays.xlsx')
excel_sheet = excel_file['Holidays 2019']

# using index
excel_sheet['A2'] = 'Deepawali'

# using cell object
excel_sheet.cell(row=2, column=2).value = 'Biggest Indian Festival for Hindus'

excel_file.save('Holidays.xlsx')

Выход:

Opennyxl Обновить значение ячейки

3. Добавление нескольких значений в лист Excel

Мы можем использовать функцию Append (), чтобы добавить последовательность значений в нижнюю часть рабочего листа.

holiday_rows = (
    ('Black Friday', 'Fourth Thursday of November, Shopping Day', '11/29/19'),
    ('Holi', 'Festival of Colors', '3/20/19')
)

for row in holiday_rows:
    excel_sheet.append(row)

excel_file.save('Holidays.xlsx')

Выход:

Opennyxl добавить несколько строк в файл Excel

4) Удаление рядов и колонн из листа Excel

Мы можем использовать функции delete_cols () и delete_rows () для удаления столбцов и строк из листа Excel.

import openpyxl

excel_file = openpyxl.load_workbook('Holidays.xlsx')
excel_sheet = excel_file['Holidays 2019']

# delete column
excel_sheet.delete_cols(idx=2)  # B=2

# delete row
excel_sheet.delete_rows(idx=2, amount=2)  # rows 2,3 are deleted

excel_file.save('Holidays.xlsx')

IDX Параметр предоставляет индекс строк и столбцов для удаления. Если мы хотим удалить несколько соседних строк и столбцов, мы можем предоставить аргумент суммы.

5. Заключение

Модуль Python OuterPyXL является идеальным выбором для работы с листами Excel. Мы также можем добавить изображения в лист Excel с помощью библиотеки подушки с ней. Но, не защищает нас против квадратичного взрыва или миллиарда смех XML атаки. Итак, если вы получаете значения от пользователя и сохраняете его, то попробуйте подтвердить и санировать его.

6) дальнейшие чтения

  • Pandas Read_Excel () – Чтение файла Excel в Python
  • Модули Python
  • Учебник Python

7) ссылки