Разное

Документация openpyxl python: библиотеки для работы с данными / Блог компании OTUS. Онлайн-образование / Хабр

Содержание

Как создать exel документ модуль openpyxl Python

Как создать exel документ в Python? Для этих целей есть много библиотек. Рассмотрим самую популярную библиотеку openpyxl. Вы сможете не только сгенерировать exel документ в openpyxl, но и вставить в него график для наглядности. Хорош тот скрипт который содержит мало кода. Подготовил для вас пример. Он содержит массу циклов. Я учёл свой опыт создания эксельных документов на PHP. Скажу что библиотек PHPExel сильно уступает openpyxl. В плане рисования графиков openpyxl лучше. Посмотрите на пример.


#!/usr/local/bin/python3

from openpyxl import Workbook
from openpyxl.styles import PatternFill, Border, Side, Alignment, Protection, Font, Side
from datetime import  *

#определяем стили
font = Font(name='Calibri',
                    size=11,
                    bold=False,
                    italic=False,
                    vertAlign=None,
                    underline='none',
                    strike=False,
                    color='FF000000')

fill = PatternFill(fill_type='solid',
                   start_color='c1c1c1',
                   end_color='c2c2c2')

border = Border(left=Side(border_style='thin',
                             color='FF000000'),
                   right=Side(border_style='thin',
                              color='FF000000'),
                   top=Side(border_style='thin',
                            color='FF000000'),
                   bottom=Side(border_style='thin',
                               color='FF000000'),
                   diagonal=Side(border_style='thin',
                                 color='FF000000'),
                   diagonal_direction=0,
                   outline=Side(border_style='thin',
                                color='FF000000'),
                   vertical=Side(border_style='thin',
                                 color='FF000000'),
                   horizontal=Side(border_style='thin',
                                  color='FF000000')
                  )
align_center=Alignment(horizontal='center',
                       vertical='bottom',
                       text_rotation=0,
                       wrap_text=False,
                       shrink_to_fit=False,
                       indent=0)
align_left=Alignment(horizontal='left',
                       vertical='bottom',
                       text_rotation=0,
                       wrap_text=False,
                       shrink_to_fit=False,
                       indent=0)
number_format = 'General'
protection = Protection(locked=True,
                        hidden=False)

# объект
wb = Workbook()

# активный лист
ws = wb.active

#название страницы
#ws = wb.create_sheet('первая страница', 0)
ws.title = 'первая страница'

#значение ячейки
#ws['A1'] = "Hello!"

#текущее время
today = datetime.today()
today = today.strftime('%d.%m.%Y %S:%M:%H')

#данные для строк
rows = [
           ['Название', 'Язык', 'Время'],
           ['Ivan', 'PHP', today],
           ['Egor', 'Python', today],
           ['Anton', 'Ruby', today],
           ['Roman', 'Javascript', today],
       ]

#циклом записываем данные
for row in rows:
    ws.append(row)

#раскрвшивание фона для заголовков
ws['A1'].fill = fill
ws['B1'].fill = fill
ws['C1'].fill = fill

#шрифты
ws['A3'].font = font
#обводка
ws['A3'].border = border
#выравнивание
ws['A3'].alignment = align_center

#вручную устанавливаем высоту первой строки
#rd = ws.row_dimensions[1]
#rd.height = 16

#увеличиваем все строки по высоте
max_row = ws.max_row
i = 1
while i 

В самом начале скрипта мы подключаем различные модули. Тут ошибок быть не должно. Далее определяем стили оформления. Отдельно определены элементы оформления:

  1. PatternFill — цвет фона ячейки
  2. Border — обводка
  3. Alignment — выравнивание
  4. Protection — защита
  5. Font — шрифт

Теперь необходимо создать объект wb и первый лист. В документе может быть множество листов: ws1, ws2, ws3… Активным может быть только один лист.


# объект
wb = Workbook()

# активный лист
ws = wb.active

Для каждой страницы вы сможете создать своё название. wb.create_sheet(‘первая страница’, 0) — этой командой будет создана первая страница с вашим названием.


#название страницы
#ws = wb.create_sheet('первая страница', 0) - создание первой страницы
ws.title = 'первая страница'

Вы можете каждой ячейке присвоить своё значение. Если у вас 2 столбца и одна строка в таблице, то нет смысла лепить цикл. Проще вручную заполнить ячейки данными. Если у вас много данных (строк в таблице), то вам необходим любой цикл. В списке rows у нас будут данные. Я поместил туда и названия столбцов. Вы можете вручную добавлять названия для столбцов. Например ws[‘A1′]=’Название’. Можете вставить в начало списка свой список с названиями столбцов. Функция append устанавливает значение для каждой ячейки.


#значение ячейки
#ws['A1'] = "Hello!"

#текущее время
today = datetime.today()
today = today.strftime('%d.%m.%Y %S:%M:%H')

#данные для строк
rows = [
           ['Название', 'Язык', 'Время'],
           ['Ivan', 'PHP', today],
           ['Egor', 'Python', today],
           ['Anton', 'Ruby', today],
           ['Roman', 'Javascript', today],
       ]

#циклом записываем данные
for row in rows:
    ws.append(row)

Покажу вам как вручную менять оформление ячеек. Вы должны каждой ячейке менять свойства.


#раскрашивание фона для заголовков
ws['A1'].fill = fill
ws['B1'].fill = fill
ws['C1'].fill = fill

#шрифты
ws['A3'].font = font
#обводка
ws['A3'].border = border
#выравнивание
ws['A3'].alignment = align_center

Теперь покажу вам как увеличить строки по высоте. Я определил номер позиции самой последней строки ws.max_row. Это значение необходимо для остановки цикла while.


#вручную устанавливаем высоту первой строки
#rd = ws.row_dimensions[1]
#rd.height = 16

#увеличиваем все строки по высоте
max_row = ws.max_row
i = 1
while i 

Добавим выравнивание вместе с обводкой ячеек (сеткой).


#сетка + выравнивание
for cellObj in ws['A1:C5']:
    for cell in cellObj:
        #print(cell.coordinate, cell.value)
        ws[cell.coordinate].border = border
        ws[cell.coordinate].alignment = align_center

#выравнивание одного столбца
for cellObj in ws['A2:A5']:
    for cell in cellObj:
        ws[cell.coordinate].alignment = align_left

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


dims = {}
for row in ws.rows:
    for cell in row:
        if cell.value:
            dims[cell.column] = max((dims.get(cell.column, 0), len(cell.value)))
for col, value in dims.items():
    #value * коэфициент
    ws.column_dimensions[col].width = value * 1.5

Теперь сохраним файл в текущую директорию. Если вам нужно менять пути, то читейте статью Модуль os Python. Там будет функция os.chdir() для смены директории и функция os.getcwd() определение тукущей директории.


#сохранение файла в текущую директорию
wb.save("sample.xlsx")

Посмотрите на результат.

наш exel документ


просмотры: 9802,
уровень: лёгкий уровень,
рейтинг: 5,
дата: 2017-10-26 22:51:46

Комментарии:

Python | Запись в файл Excel с использованием модуля openpyxl

Предварительное условие : чтение файла Excel с использованием openpyxl

Openpyxl — это библиотека Python для чтения и записи файлов Excel (с расширением xlsx / xlsm / xltx / xltm). Модуль openpyxl позволяет программе Python читать и изменять файлы Excel.

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

Давайте посмотрим, как создавать и писать в Excel-лист с помощью Python.

Код № 1: Программа для печати названия заголовка активного листа

import openpyxl

  

wb = openpyxl.Workbook()

  

sheet = wb.active

  

sheet_title = sheet.title

  

print("active sheet title: " + sheet_title)

Выход :

active sheet title: Sheet

Код № 2: Программа для изменения названия заголовка

import openpyxl

  

wb = openpyxl.Workbook()

  

sheet = wb.active

  

sheet.title = "sheet1"

  

print("sheet name is renamed as: " + sheet.title)

Выход :

sheet name is renamed as: sheet1

Код № 3: Программа для записи в лист Excel

import openpyxl

  

wb = openpyxl.Workbook()

  

sheet = wb.active

  

  

c1 = sheet.cell(row = 1, column = 1)

  

c1.value = "ANKIT"

  

c2 = sheet.cell(row= 1 , column = 2)

c2.value = "RAI"

  

c3 = sheet['A2']

c3.value = "RAHUL"

  

c4 = sheet['B2']

c4.value = "RAI"

  

wb.save("C:\\Users\\user\\Desktop\\demo.xlsx")

Выход :

код № 4: Программа для добавления листов в рабочую книгу

import openpyxl

  

wb = openpyxl.Workbook()

  

sheet = wb.active

  

wb.create_sheet(index = 1 , title = "demo sheet2")

  

wb.save("C:\\Users\\user\\Desktop\\demo.xlsx")

Выход :

Рекомендуемые посты:

Python | Запись в файл Excel с использованием модуля openpyxl

0.00 (0%) 0 votes

Python Language — OpenPyXL | python Tutorial

пример

OpenPyXL — это модуль для управления и создания xlsx/xlsm/xltx/xltm в памяти.

Манипуляция и чтение существующей книги:

import openpyxl as opx
#To change an existing wookbook we located it by referencing its path
workbook = opx.load_workbook(workbook_path)

load_workbook() содержит параметр read_only , установка этого параметра в True будет загружать книгу как read_only, это полезно при чтении больших файлов xlsx :

workbook = opx.load_workbook(workbook_path, read_only=True)

После того, как вы загрузили книгу в память, вы можете получить доступ к отдельным листам, используя workbook.sheets

first_sheet = workbook.worksheets[0]

Если вы хотите указать имя доступных листов, вы можете использовать workbook.get_sheet_names() .

sheet = workbook.get_sheet_by_name('Sheet Name')

Наконец, строки листа могут быть доступны с помощью sheet.rows . Чтобы перебрать строки в листе, используйте:

for row in sheet.rows:
    print row[0].value

Поскольку каждая row в rows является списком Cell s, используйте Cell.value для получения содержимого Cell.

Создание новой книги в памяти:

#Calling the Workbook() function creates a new book in memory
wb = opx.Workbook()

#We can then create a new sheet in the wb
ws = wb.create_sheet('Sheet Name', 0) #0 refers to the index of the sheet order in the wb

Несколько свойств вкладки могут быть изменены через openpyxl, например tabColor :

ws.sheet_properties.tabColor = 'FFC0CB'

Чтобы сохранить нашу созданную книгу, мы закончим:

wb.save('filename.xlsx')

Python | Чтение файла Excel с использованием модуля openpyxl

Openpyxl — это библиотека Python для чтения и записи файлов Excel (с расширением xlsx / xlsm / xltx / xltm). Модуль openpyxl позволяет программе Python читать и изменять файлы Excel.

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

Используйте эту команду для установки модуля openpyxl :

sudo pip3 install openpyxl 

Входной файл:

Код № 1: Программа для печати конкретного значения ячейки

  

import openpyxl

  

path = "C:\\Users\\Admin\\Desktop\\demo.xlsx"

  

wb_obj = openpyxl.load_workbook(path)

  

sheet_obj = wb_obj.active

  

  

  

cell_obj = sheet_obj.cell(row = 1, column = 1)

  

print(cell_obj.value)

Выход :

STUDENT 'S NAME

Код № 2: Определить общее количество строк

import openpyxl

  

path = "C:\\Users\\Admin\\Desktop\\demo.xlsx"

  

wb_obj = openpyxl.load_workbook(path)

sheet_obj = wb_obj.active

  

print(sheet_obj.max_row)

Выход :

6

Код № 3: Определить общее количество столбцов

import openpyxl

  

path = "C:\\Users\\Admin\\Desktop\\demo.xlsx"

  

wb_obj = openpyxl.load_workbook(path)

  

sheet_obj = wb_obj.active

  

print(sheet_obj.max_column)

Выход :

4

Код № 4: Распечатать название всех столбцов

import openpyxl

  

path = "C:\\Users\\Admin\\Desktop\\demo.xlsx"

  

wb_obj = openpyxl.load_workbook(path)

  

sheet_obj = wb_obj.active

max_col = sheet_obj.max_column

  

for i in range(1, max_col + 1):

    cell_obj = sheet_obj.cell(row = 1, column = i)

    print(cell_obj.value)

Выход :

STUDENT 'S NAME
COURSE
BRANCH
SEMESTER

Код № 5: печать первого значения столбца

import openpyxl

  

path = "C:\\Users\\Admin\\Desktop\\demo.xlsx"

  

wb_obj = openpyxl.load_workbook(path)

  

sheet_obj = wb_obj.active

m_row = sheet_obj.max_row

  

for i in range(1, m_row + 1):

    cell_obj = sheet_obj.cell(row = i, column = 1)

    print(cell_obj.value)

Выход :

STUDENT 'S NAME
ANKIT RAI
RAHUL RAI
PRIYA RAI
AISHWARYA
HARSHITA JAISWAL

Код № 6: печать определенного значения строки

import openpyxl

  

path = "C:\\Users\\Admin\\Desktop\\demo.xlsx"

  

wb_obj = openpyxl.load_workbook(path)

  

sheet_obj = wb_obj.active

  

max_col = sheet_obj.max_column

  

for i in range(1, max_col + 1):

    cell_obj = sheet_obj.cell(row = 2, column = i)

    print(cell_obj.value, end = " ")

Выход :

ANKIT RAI B.TECH CSE 4

Рекомендуемые посты:

Python | Чтение файла Excel с использованием модуля openpyxl

0.00 (0%) 0 votes

Учебник

Openpyxl — чтение, запись файлов Excel xlsx на Python

последнее изменение 6 июля 2020 г.

В этом руководстве мы покажем, как работать с файлами Excel в Python, используя
библиотека openpyxl.

Openpyxl

openpyxl — это библиотека Python для чтения и записи файлов Excel 2010 xlsx / xlsm / xltx / xltm.

Excel xlsx

В этом руководстве мы работаем с файлами xlsx. XLSX — это расширение файла для
открытый формат файла электронной таблицы XML, используемый Microsoft Excel.Файлы xlsm поддерживают макросы.
Формат xls — это проприетарный двоичный формат, а xlsx основан на формате Office Open XML.

$ sudo pip3 установить openpyxl
 

Мы устанавливаем openpyxl с помощью инструмента pip3 .

Openpyxl создать новый файл

В первом примере мы создаем новый файл xlsx с openpyxl .

write_xlsx.py

#! / usr / bin / env python

из openpyxl import Workbook
время импорта

book = Рабочая тетрадь ()
лист = книга.активный

лист ['A1'] = 56
лист ['A2'] = 43

now = time.strftime ("% x")
лист ['A3'] = сейчас

book.save ("sample.xlsx")
 

В этом примере мы создаем новый файл xlsx. Записываем данные в три ячейки.

из openpyxl import Workbook
 

Из модуля openpyxl мы импортируем класс Workbook .
Книга — это контейнер для всех остальных частей документа.

book = Рабочая тетрадь ()
 

Создаем новую рабочую тетрадь. Книга всегда создается как минимум с одним листом.

sheet = book.active
 

Получаем ссылку на активный лист.

лист ['A1'] = 56
лист ['A2'] = 43
 

Записываем числовые данные в ячейки A1 и A2.

now = time.strftime ("% x")
лист ['A3'] = сейчас
 

Записываем текущую дату в ячейку A3.

book.save ("sample.xlsx")
 

Записываем содержимое в файл sample.xlsx с
метод save .

Рис.: Новый файл

Openpyxl записывает в ячейку

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

write2cell.py

#! / usr / bin / env python

из openpyxl import Workbook

book = Рабочая тетрадь ()
sheet = book.active

лист ['A1'] = 1
sheet.cell (строка = 2, столбец = 2) .value = 2

book.save ('write2cell.xlsx')
 

В этом примере мы записываем два значения в две ячейки.

лист ['A1'] = 1
 

Здесь мы присваиваем числовое значение ячейке A1.

sheet.cell (строка = 2, столбец = 2) .value = 2
 

В этой строке мы пишем в ячейку B2 с обозначением строки и столбца.

Openpyxl добавить значения

С помощью метода append мы можем добавить группу
значения внизу текущего листа.

appending_values.py

#! / usr / bin / env python

из openpyxl import Workbook

book = Рабочая тетрадь ()
sheet = book.active

строки = (
    (88, 46, 57),
    (89, 38, 12),
    (23, 59, 78),
    (56, 21, 98),
    (24, 18, 43),
    (34, 15, 67)
)

для ряда в ряды:
    sheet.append (строка)

book.save ('добавление.xlsx')
 

В этом примере мы добавляем три столбца данных в
текущий лист.

строки = (
    (88, 46, 57),
    (89, 38, 12),
    (23, 59, 78),
    (56, 21, 98),
    (24, 18, 43),
    (34, 15, 67)
)
 

Данные хранятся в виде кортежей.

для ряда в ряды:
    sheet.append (строка)
 

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

Openpyxl читать ячейку

В следующем примере мы читаем ранее записанные данные
из образца.xlsx файл.

read_cells.py

#! / usr / bin / env python

импортировать openpyxl

книга = openpyxl.load_workbook ('sample.xlsx')

sheet = book.active

a1 = лист ['A1']
a2 = лист ['A2']
a3 = sheet.cell (строка = 3, столбец = 1)

печать (a1.value)
печать (a2.value)
печать (a3.value)
 

В примере загружается существующий файл xlsx и читаются три ячейки.

книга = openpyxl.load_workbook ('sample.xlsx')
 

Файл открывается с помощью метода load_workbook .

a1 = лист ['A1']
a2 = лист ['A2']
a3 = sheet.cell (строка = 3, столбец = 1)
 

Мы читаем содержимое ячеек A1, A2 и A3. В третьей строке
мы используем метод ячейки , чтобы получить значение ячейки A3.

$ ./read_cells.py
56
43 год
26.10.16
 

Это результат примера.

Openpyxl читает несколько ячеек

У нас есть следующая таблица данных:

Рисунок: Позиции

Мы читаем данные с помощью оператора диапазона.

read_cells2.py

#! / usr / bin / env python

импортировать openpyxl

книга = openpyxl.load_workbook ('items.xlsx')

sheet = book.active

ячейки = лист ['A1': 'B6']

для c1, c2 в ячейках:
    print ("{0: 8} {1: 8}". формат (c1.value, c2.value))
 

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

ячейки = лист ['A1': 'B6']
 

В этой строке мы читаем данные из ячеек A1 — B6.

для c1, c2 в ячейках:
    print ("{0: 8} {1: 8}".формат (c1.value, c2.value))
 

Функция format () используется для аккуратного вывода данных.
на консоли.

$ ./read_cells2.py
Количество предметов
монеты 23
стулья 3
карандаши 5
бутылки 8
книги 30
 

Это результат работы программы.

Openpyxl итерация по строкам

Метод iter_rows возвращает ячейки из
лист в виде строк.

iterating_by_rows.py

#! / usr / bin / env python

из openpyxl import Workbook

book = Рабочая тетрадь ()
лист = книга.активный

строки = (
    (88, 46, 57),
    (89, 38, 12),
    (23, 59, 78),
    (56, 21, 98),
    (24, 18, 43),
    (34, 15, 67)
)

для ряда в ряды:
    sheet.append (строка)
    
для строки в sheet.iter_rows (min_row = 1, min_col = 1, max_row = 6, max_col = 3):
    для ячейки в строке:
        print (cell.value, end = "")
    Распечатать()

book.save ('iterbyrows.xlsx')
 

Пример перебирает данные строка за строкой.

для строки в sheet.iter_rows (min_row = 1, min_col = 1, max_row = 6, max_col = 3):
 

Мы указываем границы итерации.

$ ./iterating_by_rows.py
88 46 57
89 38 12
23 59 78
56 21 98
24 18 43
34 15 67
 

Это результат примера.

Openpyxl итерация по столбцам

Метод iter_cols возвращает ячейки из
лист в виде столбцов.

iterating_by_columns.py

#! / usr / bin / env python

из openpyxl import Workbook

book = Рабочая тетрадь ()
sheet = book.active

строки = (
    (88, 46, 57),
    (89, 38, 12),
    (23, 59, 78),
    (56, 21, 98),
    (24, 18, 43),
    (34, 15, 67)
)

для ряда в ряды:
    лист.добавить (строка)
    
для строки в sheet.iter_cols (min_row = 1, min_col = 1, max_row = 6, max_col = 3):
    для ячейки в строке:
        print (cell.value, end = "")
    Распечатать()

book.save ('iterbycols.xlsx')
 

В примере выполняется итерация по столбцу данных по столбцу.

$ ./iterating_by_columns.py
88 89 23 56 24 34
46 38 59 21 18 15
57 12 78 98 43 67
 

Это результат примера.

Статистика

В следующем примере нам нужно создать файл xlsx, содержащий
числа.Например, мы создали 25 рядов чисел в
10 столбцов с функцией RANDBETWEEN () .

mystats.py

#! / usr / bin / env python

импортировать openpyxl
импортировать статистику как статистику

book = openpyxl.load_workbook ('numbers.xlsx', data_only = True)

sheet = book.active

rows = sheet.rows

values ​​= []

для ряда в ряды:
    для ячейки в строке:
        values.append (ячейка.значение)

print ("Количество значений: {0}". format (len (values)))
print ("Сумма значений: {0}". format (sum (values)))
print ("Минимальное значение: {0}".формат (мин. (значения)))
print ("Максимальное значение: {0}". format (max (values)))
print ("Среднее: {0}". формат (stats.mean (значения)))
print ("Медиана: {0}". формат (stats.median (значения)))
print ("Стандартное отклонение: {0}". format (stats.stdev (values)))
print ("Отклонение: {0}". формат (статистика. отклонение (значения)))
 

В этом примере мы считываем все значения из таблицы и вычисляем некоторую базовую статистику.

импортировать статистику как статистику
 

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

book = openpyxl.load_workbook ('numbers.xlsx', data_only = True)
 

Используя опцию data_only , мы получаем значения из ячеек, а не из формулы.

rows = sheet.rows
 

Получаем все непустые ряды ячеек.

для ряда в ряды:
    для ячейки в строке:
        values.append (ячейка.значение)
 

В двух циклах for формируем список целочисленных значений из ячеек.

print ("Количество значений: {0}".формат (len (значения)))
print ("Сумма значений: {0}". format (sum (values)))
print ("Минимальное значение: {0}". format (min (values)))
print ("Максимальное значение: {0}". format (max (values)))
print ("Среднее: {0}". формат (stats.mean (значения)))
print ("Медиана: {0}". формат (stats.median (значения)))
print ("Стандартное отклонение: {0}". format (stats.stdev (values)))
print ("Отклонение: {0}". формат (статистика. отклонение (значения)))
 

Мы вычисляем и печатаем математическую статистику значений. Некоторые из
функции встроены, остальные импортируются со статистикой
модуль.

$ ./mystats.py
Количество значений: 312
Сумма значений: 15877
Минимальное значение: 0
Максимальное значение: 100
Среднее значение: 50,88782051282051
Медиана: 54,0
Стандартное отклонение: 28,459203819700967
Отклонение: 809.9262820512821
 

Это пример вывода.

Openpyxl фильтрация и сортировка данных

Лист имеет атрибут auto_filter , который позволяет
для установки условий фильтрации и сортировки.

Обратите внимание, что Openpyxl устанавливает условия, но мы должны их применять.
внутри приложения Электронная таблица.

filter_sort.py

#! / usr / bin / env python

из openpyxl import Workbook

wb = Книга ()
sheet = wb.active

данные = [
    ['Элемент', 'Цвет'],
    ['ручка', 'коричневый'],
    ['книга', 'черный'],
    ['тарелка', 'белый'],
    ['стул', 'коричневый'],
    ['монета', 'золото'],
    ['кровать', 'коричневый'],
    ['блокнот', 'белый'],
]

для r в данных:
    sheet.append (r)

sheet.auto_filter.ref = 'A1: B8'
sheet.auto_filter.add_filter_column (1, ['коричневый', 'белый'])
sheet.auto_filter.add_sort_condition ('B2: B8')

wb.сохранить ('отфильтрованный.xlsx')
 

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

Размеры Openpyxl

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

sizes.py

#! / usr / bin / env python

из openpyxl import Workbook

book = Рабочая тетрадь ()
sheet = book.active

лист ['A3'] = 39
лист ['B3'] = 19

rows = [
    (88, 46),
    (89, 38),
    (23, 59),
    (56, 21),
    (24, 18),
    (34, 15)
]

для ряда в ряды:
    лист.добавить (строка)

печать (лист. размеры)
print ("Минимальная строка: {0}". format (sheet.min_row))
print ("Максимальное количество строк: {0}". format (sheet.max_row))
print ("Минимальный столбец: {0}". format (sheet.min_column))
print ("Максимальный столбец: {0}". format (sheet.max_column))

для c1, c2 на листе [размеры листа]:
    печать (c1.value, c2.value)

book.save ('sizes.xlsx')
 

В этом примере вычисляются размеры двух столбцов данных.

лист ['A3'] = 39
лист ['B3'] = 19

rows = [
    (88, 46),
    (89, 38),
    (23, 59),
    (56, 21),
    (24, 18),
    (34, 15)
]

для ряда в ряды:
    лист.добавить (строка)
 

Добавляем данные в рабочий лист. Обратите внимание, что мы начинаем добавлять с
третий ряд.

печать (лист. размеры)
 

Свойство Dimensions возвращает верхний левый и нижний правый
ячейка области непустых ячеек.

print ("Минимальная строка: {0}". format (sheet.min_row))
print ("Максимальное количество строк: {0}". format (sheet.max_row))
 

Используя свойства min_row и max_row , мы получаем минимум
и максимальная строка, содержащая данные.

print ("Минимальный столбец: {0}". format (sheet.min_column))
print ("Максимальный столбец: {0}". format (sheet.max_column))
 

Со свойствами min_column и max_column мы получаем минимум
и максимальный столбец, содержащий данные.

для c1, c2 на листе [размеры листа]:
    печать (c1.value, c2.value)
 

Мы перебираем данные и выводим их на консоль.

$ ./dimensions.py
A3: B9
Минимальный ряд: 3
Максимальный ряд: 9
Минимальный столбец: 1
Максимальный столбец: 2
39 19
88 46
89 38
23 59
56 21
24 18
34 15
 

Это результат примера.

листов

В каждой книге может быть несколько листов.

Рис.: Листы

Давайте составим рабочую тетрадь с этими тремя листами.

листов.py

#! / usr / bin / env python

импортировать openpyxl

книга = openpyxl.load_workbook ('листов.xlsx')

печать (book.get_sheet_names ())

active_sheet = book.active
печать (тип (active_sheet))

sheet = book.get_sheet_by_name ("Март")
печать (название листа)
 

Программа работает с листами Excel.

печать (книга.get_sheet_names ())
 

Метод get_sheet_names возвращает имена
доступные листы в книге.

active_sheet = book.active
печать (тип (active_sheet))
 

Достаем активный лист и выводим его тип на терминал.

sheet = book.get_sheet_by_name ("Март")
 

Мы получаем ссылку на лист с помощью метода get_sheet_by_name () .

печать (название листа)
 

Название полученного листа печатается на терминале.

$ ./sheets.py
['Январь февраль март']
<класс 'openpyxl.worksheet.worksheet.Worksheet'>
марш
 

Это результат работы программы.

листов2.py

#! / usr / bin / env python

импортировать openpyxl

книга = openpyxl.load_workbook ('листов.xlsx')

book.create_sheet («Апрель»)

печать (book.sheetnames)

sheet1 = book.get_sheet_by_name ("Январь")
book.remove_sheet (sheet1)

печать (book.sheetnames)

book.create_sheet ("Январь", 0)
печать (book.sheetnames)

книга.сохранить ('листов2.xlsx')
 

В этом примере мы создаем новый лист.

book.create_sheet («Апрель»)
 

Новый лист создается с помощью метода create_sheet .

печать (book.sheetnames)
 

Имена листов также могут отображаться с атрибутом имена листов .

book.remove_sheet (sheet1)
 

Лист можно удалить с помощью метода remove_sheet .

book.create_sheet ("Январь", 0)
 

Новый лист может быть создан в указанной позиции; в нашем случае
мы создаем новый лист в позиции с индексом 0.

$ ./sheets2.py
['Январь февраль март апрель']
['Февраль', 'март', 'апрель']
['Январь февраль март апрель']
 

Это результат работы программы.

Можно изменить цвет фона рабочего листа.

листов3.py

#! / usr / bin / env python

импортировать openpyxl

книга = openpyxl.load_workbook ('листов.xlsx')

sheet = book.get_sheet_by_name ("Март")
sheet.sheet_properties.tabColor = "0072BA"

book.save ('листов3.xlsx ')
 

В примере изменяется цвет фона листа под названием
«Марш».

sheet.sheet_properties.tabColor = "0072BA"
 

Мы меняем свойство tabColor на новый цвет.

Рис.: Цвет фона рабочего листа

Цвет фона третьего листа был изменен на синий.
цвет.

Объединение ячеек

Ячейки могут быть объединены методом merge_cells и не объединены.
с методом unmerge_cells .Когда мы объединяем ячейки, все ячейки
но верхний левый удаляется с листа.

merging_cells.py

#! / usr / bin / env python

из openpyxl import Workbook
из openpyxl.styles import Alignment

book = Рабочая тетрадь ()
sheet = book.active

sheet.merge_cells ('A1: B2')

ячейка = sheet.cell (строка = 1, столбец = 1)
cell.value = 'Солнечный день'
cell.alignment = Выравнивание (по горизонтали = 'по центру', по вертикали = 'по центру')

book.save ('merging.xlsx')
 

В этом примере мы объединяем четыре ячейки: A1, B1, A2 и B2.Текст в
последняя ячейка находится по центру.

из openpyxl.styles import Alignment
 

Чтобы центрировать текст в последней ячейке, мы используем выравнивание
класс из модуля openpyxl.styles .

sheet.merge_cells ('A1: B2')
 

Мы объединяем четыре ячейки методом merge_cells .

ячейка = sheet.cell (строка = 1, столбец = 1)
 

Получаем последнюю ячейку.

cell.value = 'Солнечный день'
ячейка.alignment = Выравнивание (по горизонтали = 'центр', по вертикали = 'центр')
 

Мы устанавливаем текст в объединенную ячейку и обновляем ее выравнивание.

Рис.: Объединенные ячейки

закрепленные области Openpyxl

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

freezing.py

#! / usr / bin / env python

из openpyxl import Workbook
из openpyxl.styles import Alignment

book = Рабочая тетрадь ()
sheet = book.active

лист.freeze_panes = 'B2'

book.save ('freezing.xlsx')
 

В примере фиксируются панели на ячейку B2.

sheet.freeze_panes = 'B2'
 

Чтобы заморозить панели, мы используем свойство freeze_panes .

Формулы Openpyxl

В следующем примере показано, как использовать формулы. openpyxl делает
не делать расчетов; записывает формулы в ячейки.

formulas.py

#! / usr / bin / env python

из openpyxl import Workbook

book = Рабочая тетрадь ()
лист = книга.активный

строки = (
    (34, 26),
    (88, 36),
    (24, 29),
    (15, 22),
    (56, 13),
    (76, 18)
)

для ряда в ряды:
    sheet.append (строка)

ячейка = sheet.cell (строка = 7, столбец = 2)
cell.value = "= СУММ (A1: B6)"
cell.font = cell.font.copy (жирный шрифт = True)

book.save ('formulas.xlsx')
 

В примере мы вычисляем сумму всех значений
с функцией СУММ () и стиль
вывод жирным шрифтом.

строки = (
    (34, 26),
    (88, 36),
    (24, 29),
    (15, 22),
    (56, 13),
    (76, 18)
)

для ряда в ряды:
    лист.добавить (строка)
 

Создаем два столбца данных.

ячейка = sheet.cell (строка = 7, столбец = 2)
 

Получаем ячейку, в которой показываем результат расчета.

cell.value = "= СУММ (A1: B6)"
 

Записываем формулу в ячейку.

cell.font = cell.font.copy (жирный шрифт = True)
 

Меняем стиль шрифта.

Рис.: Расчет суммы значений

изображений Openpyxl

В следующем примере мы показываем, как вставить изображение на лист.

write_image.py

#! / usr / bin / env python

из openpyxl import Workbook
из openpyxl.drawing.image импорт изображения

book = Рабочая тетрадь ()
sheet = book.active

img = Изображение ("icesid.png")
sheet ['A1'] = 'Это Сид'

sheet.add_image (img, 'B2')

book.save ("sheet_image.xlsx")
 

В этом примере мы записываем изображение на лист.

из openpyxl.drawing.image импорт изображения
 

Работаем с классом Image от
openpyxl.чертеж. изображение модуль.

img = Изображение ("icesid.png")
 

Создается новый класс Image . The icesid.png
изображение находится в текущем рабочем каталоге.

sheet.add_image (img, 'B2')
 

Мы добавляем новое изображение с помощью метода add_image .

Графики Openpyxl

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

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

create_bar_chart.py

#! / usr / bin / env python

из openpyxl import Workbook
из импорта openpyxl.chart (
    Ссылка,
    Серии,
    BarChart
)

book = Рабочая тетрадь ()
sheet = book.active

rows = [
    («США», 46),
    («Китай», 38),
    («Великобритания», 29),
    («Россия», 22),
    («Южная Корея», 13),
    («Германия», 11)
]

для ряда в ряды:
    лист.добавить (строка)
    
data = Ссылка (лист, min_col = 2, min_row = 1, max_col = 2, max_row = 6)
категории = Ссылка (лист, min_col = 1, min_row = 1, max_row = 6)

chart = BarChart ()
chart.add_data (данные = данные)
chart.set_categories (категории)

chart.legend = Нет
chart.y_axis.majorGridlines = Нет
chart.varyColors = True
chart.title = "Золотые олимпийские медали в Лондоне"

sheet.add_chart (диаграмма, «A8»)

book.save ("bar_chart.xlsx")
 

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

из импорта openpyxl.chart (
    Ссылка,
    Серии,
    BarChart
)
 

В модуле openpyxl.chart есть инструменты для работы с диаграммами.

book = Рабочая тетрадь ()
sheet = book.active
 

Создана новая книга.

rows = [
    («США», 46),
    («Китай», 38),
    («Великобритания», 29),
    («Россия», 22),
    («Южная Корея», 13),
    («Германия», 11)
]

для ряда в ряды:
    sheet.append (строка)
 

Мы создаем некоторые данные и добавляем их в ячейки активного листа.

data = Ссылка (лист, min_col = 2, min_row = 1, max_col = 2, max_row = 6)
 

С помощью класса Reference мы ссылаемся на строки на листе, которые
представляют данные. В нашем случае это номера золотых олимпийских медалей.

категории = Ссылка (лист, min_col = 1, min_row = 1, max_row = 6)
 

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

chart = BarChart ()
chart.add_data (данные = данные)
chart.set_categories (категории)
 

Создаем гистограмму и задаем ей данные и категории.

chart.legend = Нет
chart.y_axis.majorGridlines = Нет
 

Используя атрибуты legend и majorGridlines , мы
отключите легенды и основные линии сетки.

chart.varyColors = True
 

Установка разного цвета от до Истинный , каждая полоса имеет свой
цвет.

chart.title = "Золотые олимпийские медали в Лондоне"
 

Для диаграммы задается заголовок.

sheet.add_chart (диаграмма, «A8»)
 

Созданная диаграмма добавляется на лист методом add_chart .

Рис.: Гистограмма

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

Посетите учебник Python или
список всех руководств по Python.

.

Python Language — OpenPyXL | Учебник python

Пример

OpenPyXL — это модуль для управления и создания книг xlsx / xlsm / xltx / xltm в памяти.

Управление и чтение существующей книги:

  импортировать openpyxl как opx
# Чтобы изменить существующую wookbook, мы нашли ее, указав путь к ней
workbook = opx.load_workbook (workbook_path)
  

load_workbook () содержит параметр read_only , установка этого значения на True загрузит книгу как read_only, это полезно при чтении больших файлов xlsx :

  рабочая тетрадь = opx.load_workbook (workbook_path, read_only = True)
  

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

  first_sheet = workbook.worksheets [0]
  

Если вы хотите указать имя доступных листов, вы можете использовать workbook.get_sheet_names () .

  sheet = workbook.get_sheet_by_name ('Имя листа')
  

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

  для ряда в лист. Строк:
    напечатать строку [0]. значение
  

Поскольку каждая строка в строках представляет собой список из Cell s, используйте Cell.value , чтобы получить содержимое Cell.

Создание новой книги в памяти:

  # Вызов функции Workbook () создает новую книгу в памяти
wb = opx.Workbook ()

# Затем мы можем создать новый лист в wb
ws = wb.create_sheet ('Sheet Name', 0) # 0 относится к индексу порядка листов в wb
  

Некоторые свойства вкладок можно изменить через openpyxl, например tabColor :

  ws.sheet_properties.tabColor = 'FFC0CB'
  

Чтобы сохранить нашу созданную книгу, мы заканчиваем с:

  wb.save ('filename.xlsx')
  

.Учебник

Openpyxl — Руководство по библиотеке Python Excel
Openpyxl

Это
статья представляет собой руководство по лучшей библиотеке Python Excel Openpyxl для решения
с файлами Excel 2010 xlsx / xlsm. В этом руководстве вы узнаете, как работать с файлами Excel или электронными таблицами в Python с помощью пакета Openpyxl. Ты выучишь
для чтения, записи, создания, загрузки и управления файлами Excel.

Openpyxl

Openpyxl — это
Библиотека Python для чтения, записи и изменения Excel 2010 или новее
xlsx / xlsm / xltm / xltx файлы.Python
Programming предоставляет различные пакеты для работы с электронными таблицами,
самым эффективным и гибким является этот модуль. Openpyxl работает с
xlsx, и он не будет работать с более ранними версиями Excel.
с расширением xls.

Openpyxl Загрузить

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

Как установить Openpyxl с
пункт

Если вы хотите установить
openpyxl с помощью команды pip используйте эту строку кода

$ установка пункта
openpyxl

Вы также можете
необходимо установить библиотеку подушек для добавления изображений (jpeg, png, bmp,
…) в вашем файле openpyxl.

$ pip install подушка

Импорт
Openpyxl в Python

После
успешная установка, пришло время использовать openpyxl в python. Назвать это
используйте оператор импорта, например

>>>
импорт openpyxl

или можете
нужно импортировать только Workbook

>>>
из openpyxl import Workbook

Использование
Примеры

Учебник

1. Создать
рабочая тетрадь

2. Добавить лист

3. Удалить
лист

4.Загрузить
рабочая тетрадь

5. Сохранить
рабочая тетрадь

6. Закрыть
рабочая тетрадь

Студенты, не изучавшие информатику

Помимо изучающих информатику, мы также специализируемся на преподавании и обучении Python от вводных до продвинутых модулей, таких как Pandas и машинное обучение, до изучающих Python без информатики.

Если вы не из CS Мы научим вас, что между вашими навыками Python и навыками Python программистов CS не будет разницы.

Присоединяйтесь

.

Python Language — OpenPyXL | Учебник python

Ejemplo

OpenPyXL — это модуль для манипулирования и создания библиотек трабах xlsx / xlsm / xltx / xltm в память.

Manipulando y leyendo un libro existente:

  import openpyxl as opx
# Чтобы изменить существующую wookbook, мы нашли ее, указав путь к ней
workbook = opx.load_workbook (workbook_path)
  

load_workbook () contiene el parámetro read_only , estableciendo esto en True cargará el libro como read_only, esto es útil cuando se leen archivos xlsx12: больших книг = больших книгload_workbook (workbook_path, read_only = True)

Una vez que haya cargado el libro en la memoria, puede accept a las hojas Individuals using workbook.sheets

  first_sheet = workbook.worksheets [0]
  

Si desea especificar el nombre de una hoja disponible, puede usar workbook.get_sheet_names () .

  sheet = workbook.get_sheet_by_name ('Имя листа')
  

Finalmente, se puede accept a las filas de la hoja utilizando sheet.ряды . Para iterar sobre las filas de una hoja, используйте:

  для строки в листе. Строки:
    напечатать строку [0]. значение
  

Dado que cada row en rows es una lista de Cell , используйте Cell.value для получения содержимого Celda.

Creando un nuevo libro de ejercicios en la memoria:

  # Вызов функции Workbook () создает новую книгу в памяти
wb = opx.Workbook ()

# Затем мы можем создать новый лист в wb
ws = wb.create_sheet ('Sheet Name', 0) # 0 относится к индексу порядка листов в wb
  

Se pueden cambiar varias propiedades de la pestaña a través de openpyxl, por ejemplo el tabColor :

  ws.sheet_properties.tabColor = 'FFC0CB'
  

Para guardar nuestro libro creado terminamos con:

  wb.save ('filename.xlsx')
  

.

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

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