4 added
1 removed
Original
2026-01-01
Modified
2026-02-21
1
<p><a>#статьи</a></p>
1
<p><a>#статьи</a></p>
2
<ul><li>20 ноя 2025</li>
2
<ul><li>20 ноя 2025</li>
3
<li>0</li>
3
<li>0</li>
4
</ul><p>Автоматизируем работу с Excel: чтение, запись, оформление отчётов и многое другое.</p>
4
</ul><p>Автоматизируем работу с Excel: чтение, запись, оформление отчётов и многое другое.</p>
5
<p>Иллюстрация: Оля Ежак для Skillbox Media</p>
5
<p>Иллюстрация: Оля Ежак для Skillbox Media</p>
6
<p>Программист, консультант, специалист по документированию. Легко и доступно рассказывает о сложных вещах в программировании и дизайне.</p>
6
<p>Программист, консультант, специалист по документированию. Легко и доступно рассказывает о сложных вещах в программировании и дизайне.</p>
7
<p>Excel - отличный инструмент для работы с таблицами, но у него есть ограничения. Пока данных немного, всё удобно: можно вручную расставлять формулы, обновлять информацию в ячейках, добавлять столбцы и так далее. Но когда операций становится больше, работа превращается в сложную рутину: некоторые действия приходятся повторять десятки или сотни раз, несоответствия ищутся вручную, и вероятность ошибок при этом растёт.</p>
7
<p>Excel - отличный инструмент для работы с таблицами, но у него есть ограничения. Пока данных немного, всё удобно: можно вручную расставлять формулы, обновлять информацию в ячейках, добавлять столбцы и так далее. Но когда операций становится больше, работа превращается в сложную рутину: некоторые действия приходятся повторять десятки или сотни раз, несоответствия ищутся вручную, и вероятность ошибок при этом растёт.</p>
8
<p>Python помогает решить эти проблему с помощью библиотек автоматизации работы с файлами Excel. Самая популярная из них - OpenPyXL.</p>
8
<p>Python помогает решить эти проблему с помощью библиотек автоматизации работы с файлами Excel. Самая популярная из них - OpenPyXL.</p>
9
<p><strong>Содержание</strong></p>
9
<p><strong>Содержание</strong></p>
10
<ul><li><a>Что такое OpenPyXL</a></li>
10
<ul><li><a>Что такое OpenPyXL</a></li>
11
<li><a>Как установить библиотеку</a></li>
11
<li><a>Как установить библиотеку</a></li>
12
<li><a>Как читать и сохранять табличные файлы</a></li>
12
<li><a>Как читать и сохранять табличные файлы</a></li>
13
<li><a>Как работать с листами Excel</a></li>
13
<li><a>Как работать с листами Excel</a></li>
14
<li><a>Особенности чтения и записи данных в ячейки</a></li>
14
<li><a>Особенности чтения и записи данных в ячейки</a></li>
15
<li><a>Как перебрать строки и столбцы</a></li>
15
<li><a>Как перебрать строки и столбцы</a></li>
16
<li><a>Стилизация таблиц в OpenPyXL</a></li>
16
<li><a>Стилизация таблиц в OpenPyXL</a></li>
17
<li><a>Как использовать формулы</a></li>
17
<li><a>Как использовать формулы</a></li>
18
<li><a>Полезные сценарии использования OpenPyXL</a></li>
18
<li><a>Полезные сценарии использования OpenPyXL</a></li>
19
<li><a>Совместимость и подводные камни</a></li>
19
<li><a>Совместимость и подводные камни</a></li>
20
</ul><p>OpenPyXL - это библиотека на Python, которая помогает работать с файлами Excel с помощью кода в IDE (среда разработки). Она позволяет:</p>
20
</ul><p>OpenPyXL - это библиотека на Python, которая помогает работать с файлами Excel с помощью кода в IDE (среда разработки). Она позволяет:</p>
21
<ul><li>открывать существующие или создавать новые файлы Excel;</li>
21
<ul><li>открывать существующие или создавать новые файлы Excel;</li>
22
<li>читать и записывать данные в ячейки, изменять их содержимое и добавлять новые;</li>
22
<li>читать и записывать данные в ячейки, изменять их содержимое и добавлять новые;</li>
23
<li>настраивать ширину столбцов и высоту строк;</li>
23
<li>настраивать ширину столбцов и высоту строк;</li>
24
<li>создавать и удалять листы, а также менять их порядок;</li>
24
<li>создавать и удалять листы, а также менять их порядок;</li>
25
<li>работать с формулами, результат которых Excel сам пересчитает при открытии;</li>
25
<li>работать с формулами, результат которых Excel сам пересчитает при открытии;</li>
26
<li>применять форматирование - настраивать шрифт, цвет, границы и другие параметры оформления;</li>
26
<li>применять форматирование - настраивать шрифт, цвет, границы и другие параметры оформления;</li>
27
<li>создавать простые диаграммы из данных;</li>
27
<li>создавать простые диаграммы из данных;</li>
28
<li>работать со сводными таблицами.</li>
28
<li>работать со сводными таблицами.</li>
29
</ul><p>С OpenPyXL удобно автоматизировать рутинные операции: сформировать отчёт, разложить данные по листам, выделить отдельные строки, подготовить таблицу в удобном для чтения виде и сохранить её без ручной работы. То, что в интерфейсе Excel требует десятков кликов, в Python с OpenPyXL выполняется всего несколькими строками кода.</p>
29
</ul><p>С OpenPyXL удобно автоматизировать рутинные операции: сформировать отчёт, разложить данные по листам, выделить отдельные строки, подготовить таблицу в удобном для чтения виде и сохранить её без ручной работы. То, что в интерфейсе Excel требует десятков кликов, в Python с OpenPyXL выполняется всего несколькими строками кода.</p>
30
<p>Перед тем как начать работать с OpenPyXL, библиотеку нужно установить. Для этого используется pip - стандартная программа для установки пакетов в Python.</p>
30
<p>Перед тем как начать работать с OpenPyXL, библиотеку нужно установить. Для этого используется pip - стандартная программа для установки пакетов в Python.</p>
31
<p>Сначала убедимся, что Python и pip уже есть на компьютере. Для этого введём в терминале или командной строке команды проверки версий:</p>
31
<p>Сначала убедимся, что Python и pip уже есть на компьютере. Для этого введём в терминале или командной строке команды проверки версий:</p>
32
python --version pip --version<p>Если обе команды возвращают номера версий, значит, всё в порядке. Теперь установим пакет openpyxl, который добавляет в Python поддержку работы с файлами Excel:</p>
32
python --version pip --version<p>Если обе команды возвращают номера версий, значит, всё в порядке. Теперь установим пакет openpyxl, который добавляет в Python поддержку работы с файлами Excel:</p>
33
pip install openpyxl<p>После этого библиотека готова к использованию. Это можно проверить в интерактивной консоли Python или в любой IDE:</p>
33
pip install openpyxl<p>После этого библиотека готова к использованию. Это можно проверить в интерактивной консоли Python или в любой IDE:</p>
34
import openpyxl<p>Если ошибок не появилось, установка прошла успешно.</p>
34
import openpyxl<p>Если ошибок не появилось, установка прошла успешно.</p>
35
<p>Для создания пустого файла Excel в OpenPyXL есть класс Workbook. Напишем код:</p>
35
<p>Для создания пустого файла Excel в OpenPyXL есть класс Workbook. Напишем код:</p>
36
from openpyxl import Workbook workbook = Workbook() workbook.save("example.xlsx")<p>Мы создали файл и сохранили его с помощью метода save(). В скобках указывается наименование документа. Если открыть новый файл в Excel, там будет один пустой лист.</p>
36
from openpyxl import Workbook workbook = Workbook() workbook.save("example.xlsx")<p>Мы создали файл и сохранили его с помощью метода save(). В скобках указывается наименование документа. Если открыть новый файл в Excel, там будет один пустой лист.</p>
37
<p>Чаще на практике требуется работать с уже существующим файлом, а не создавать его с нуля. Для загрузки документа используется функция load_workbook():</p>
37
<p>Чаще на практике требуется работать с уже существующим файлом, а не создавать его с нуля. Для загрузки документа используется функция load_workbook():</p>
38
from openpyxl import load_workbook workbook = load_workbook("example.xlsx")<p>Теперь переменная workbook ссылается на файл, с которым можно выполнять любые действия: читать данные, добавлять новые листы, менять значения в ячейках и так далее.</p>
38
from openpyxl import load_workbook workbook = load_workbook("example.xlsx")<p>Теперь переменная workbook ссылается на файл, с которым можно выполнять любые действия: читать данные, добавлять новые листы, менять значения в ячейках и так далее.</p>
39
<p>Когда мы создаём новую книгу, OpenPyXL автоматически добавляет один лист с именем Sheet. Чтобы к нему обратиться, напишем код:</p>
39
<p>Когда мы создаём новую книгу, OpenPyXL автоматически добавляет один лист с именем Sheet. Чтобы к нему обратиться, напишем код:</p>
40
page = workbook.active<p>Свойство active возвращает текущий рабочий лист.</p>
40
page = workbook.active<p>Свойство active возвращает текущий рабочий лист.</p>
41
<p>Чтобы создать новый лист в существующем файле, используется метод create_sheet(). В скобках указывается имя нового листа:</p>
41
<p>Чтобы создать новый лист в существующем файле, используется метод create_sheet(). В скобках указывается имя нового листа:</p>
42
workbook.create_sheet("Отчёт") workbook.save("example.xlsx")<p>Теперь в файле будет два листа - Sheet, который создаётся по умолчанию, и Отчёт. К каждому из них можно обращаться по отдельности:</p>
42
workbook.create_sheet("Отчёт") workbook.save("example.xlsx")<p>Теперь в файле будет два листа - Sheet, который создаётся по умолчанию, и Отчёт. К каждому из них можно обращаться по отдельности:</p>
43
page = workbook["Отчёт"]<p>Если мы хотим удалить лист из файла, то используем метод remove(). В скобках указываем название переменной с таблицей и название листа:</p>
43
page = workbook["Отчёт"]<p>Если мы хотим удалить лист из файла, то используем метод remove(). В скобках указываем название переменной с таблицей и название листа:</p>
44
workbook.remove(workbook["Sheet"])<p>После изменений сохраним файл:</p>
44
workbook.remove(workbook["Sheet"])<p>После изменений сохраним файл:</p>
45
workbook.save("example.xlsx")<p>Основные задачи при работе с Excel - записывать и читать значения в таблице. В OpenPyXL доступ к ячейке осуществляется двумя способами: по адресу и через координаты. Рассмотрим оба варианта.</p>
45
workbook.save("example.xlsx")<p>Основные задачи при работе с Excel - записывать и читать значения в таблице. В OpenPyXL доступ к ячейке осуществляется двумя способами: по адресу и через координаты. Рассмотрим оба варианта.</p>
46
<p>Адрес ячейки в Excel состоит из буквы и числа: буква обозначает столбец, а число - строку. Например, A1 - это ячейка в первом столбце и первой строке, B3 - ячейка во втором столбце и третьей строке.</p>
46
<p>Адрес ячейки в Excel состоит из буквы и числа: буква обозначает столбец, а число - строку. Например, A1 - это ячейка в первом столбце и первой строке, B3 - ячейка во втором столбце и третьей строке.</p>
47
<p>Запишем данные в ячейку А1 таблицы:</p>
47
<p>Запишем данные в ячейку А1 таблицы:</p>
48
page["A1"] = "Привет, Excel!"<p>Теперь в первой строке и первом столбце появится текст.</p>
48
page["A1"] = "Привет, Excel!"<p>Теперь в первой строке и первом столбце появится текст.</p>
49
<p>Прочитать значение из ячейки можно так:</p>
49
<p>Прочитать значение из ячейки можно так:</p>
50
value = page["A1"].value print(value)<p>На экран будет выведено её содержимое.</p>
50
value = page["A1"].value print(value)<p>На экран будет выведено её содержимое.</p>
51
<p>Координаты ячейки в Excel - это номер строки и номер столбца. Если адрес ячейки - B1, то её координаты - это (1, 2): первая строка и второй столбец.</p>
51
<p>Координаты ячейки в Excel - это номер строки и номер столбца. Если адрес ячейки - B1, то её координаты - это (1, 2): первая строка и второй столбец.</p>
52
<p>Попробуем добавить число в ячейку, обратившись к ней по координатам:</p>
52
<p>Попробуем добавить число в ячейку, обратившись к ней по координатам:</p>
53
page.cell(row=2, column=3, value=100)<p>Теперь в ячейку на пересечении второй строки и третьего столбца записано число 100. Координаты - удобный способ работать с ячейками, когда мы перебираем их циклами для чтения или добавления значений.</p>
53
page.cell(row=2, column=3, value=100)<p>Теперь в ячейку на пересечении второй строки и третьего столбца записано число 100. Координаты - удобный способ работать с ячейками, когда мы перебираем их циклами для чтения или добавления значений.</p>
54
<p>Когда данных много, работать с ними по одной ячейке неудобно. В OpenPyXL есть методы для перебора строк и столбцов.</p>
54
<p>Когда данных много, работать с ними по одной ячейке неудобно. В OpenPyXL есть методы для перебора строк и столбцов.</p>
55
<p>Чтобы пройтись по строкам, используем цикл for и метод iter_rows:</p>
55
<p>Чтобы пройтись по строкам, используем цикл for и метод iter_rows:</p>
56
for row in page.iter_rows(min_row=1, max_row=3, values_only=True): print(row)<p>Цикл будет последовательно получать группы ячеек - по одной строке за раз. Внутри iter_rows мы указываем, какие строки нужно прочитать:</p>
56
for row in page.iter_rows(min_row=1, max_row=3, values_only=True): print(row)<p>Цикл будет последовательно получать группы ячеек - по одной строке за раз. Внутри iter_rows мы указываем, какие строки нужно прочитать:</p>
57
<ul><li>Параметр min_row задаёт начальную строку, а max_row - последнюю.</li>
57
<ul><li>Параметр min_row задаёт начальную строку, а max_row - последнюю.</li>
58
<li>Параметр values_only=True означает, что вместо объектов ячеек метод вернёт только содержащиеся в них данные без информации о стиле, координатах или других свойствах.</li>
58
<li>Параметр values_only=True означает, что вместо объектов ячеек метод вернёт только содержащиеся в них данные без информации о стиле, координатах или других свойствах.</li>
59
</ul><p>В теле цикла print(row) выводит каждую строку в виде кортежа, где каждый элемент - это значение отдельной ячейки.</p>
59
</ul><p>В теле цикла print(row) выводит каждую строку в виде кортежа, где каждый элемент - это значение отдельной ячейки.</p>
60
<p>Аналогичный способ есть и для столбцов. В нём используется метод iter_cols, в параметрах которого задаём начальный и конечный столбец:</p>
60
<p>Аналогичный способ есть и для столбцов. В нём используется метод iter_cols, в параметрах которого задаём начальный и конечный столбец:</p>
61
for col in page.iter_cols(min_col=1, max_col=2, values_only=True): print(col)<p>С помощью этих методов информацию из таблиц Excel можно превратить в различные типы данных Python: списки, словари, кортежи - и работать с ними дальше.</p>
61
for col in page.iter_cols(min_col=1, max_col=2, values_only=True): print(col)<p>С помощью этих методов информацию из таблиц Excel можно превратить в различные типы данных Python: списки, словари, кортежи - и работать с ними дальше.</p>
62
<p>В OpenPyXL доступно управление внешним видом таблицы: изменение ширины столбцов, настройка шрифтов и цветов, а также объединение ячеек. Это помогает оформить файл Excel, не открывая его в табличном редакторе.</p>
62
<p>В OpenPyXL доступно управление внешним видом таблицы: изменение ширины столбцов, настройка шрифтов и цветов, а также объединение ячеек. Это помогает оформить файл Excel, не открывая его в табличном редакторе.</p>
63
<p>По умолчанию все столбцы одинаковой ширины. Но этот показатель можно настроить для каждого из них отдельно:</p>
63
<p>По умолчанию все столбцы одинаковой ширины. Но этот показатель можно настроить для каждого из них отдельно:</p>
64
page.column_dimensions["A"].width = 20<p>Теперь ширина первого столбца будет равна 20 символам. Схожим образом настраивается высота строк:</p>
64
page.column_dimensions["A"].width = 20<p>Теперь ширина первого столбца будет равна 20 символам. Схожим образом настраивается высота строк:</p>
65
page.row_dimensions[3].height = 25<p>Для оформления текста используется класс Font, а для заливки ячеек - PatternFill.</p>
65
page.row_dimensions[3].height = 25<p>Для оформления текста используется класс Font, а для заливки ячеек - PatternFill.</p>
66
<p>В OpenPyXL цвета задаются в HEX-системе RGB. Каждый цвет записывается шестнадцатеричным кодом из шести символов, где два символа отвечают за красный канал, два - за зелёный и два - за синий. Учить кодировку цветов наизусть не обязательно, можно быстро найти их на <a>HTML Color Picker на W3Schools</a>.</p>
66
<p>В OpenPyXL цвета задаются в HEX-системе RGB. Каждый цвет записывается шестнадцатеричным кодом из шести символов, где два символа отвечают за красный канал, два - за зелёный и два - за синий. Учить кодировку цветов наизусть не обязательно, можно быстро найти их на <a>HTML Color Picker на W3Schools</a>.</p>
67
<p>Выделим в таблице первую строку: ячейки сделаем с синей заливкой, а текст - белым:</p>
67
<p>Выделим в таблице первую строку: ячейки сделаем с синей заливкой, а текст - белым:</p>
68
from openpyxl.styles import Font, PatternFill page["A1"].font = Font(bold=True, color="FFFFFF") # белый жирный текст page["A1"].fill = PatternFill("solid", fgColor="4F81BD") # синяя заливка ячейки<p>Иногда требуется объединить несколько ячеек в одну, например для заголовка. Для этого используется метод merge_cells()</p>
68
from openpyxl.styles import Font, PatternFill page["A1"].font = Font(bold=True, color="FFFFFF") # белый жирный текст page["A1"].fill = PatternFill("solid", fgColor="4F81BD") # синяя заливка ячейки<p>Иногда требуется объединить несколько ячеек в одну, например для заголовка. Для этого используется метод merge_cells()</p>
69
page.merge_cells("A1:C1") page["A1"] = "Отчёт за месяц"<p>Он принимает диапазон ячеек для объединения. В нашем случае - от A1 до C1. Обратите внимание, что ячейка получает адрес по первому значению - A1.</p>
69
page.merge_cells("A1:C1") page["A1"] = "Отчёт за месяц"<p>Он принимает диапазон ячеек для объединения. В нашем случае - от A1 до C1. Обратите внимание, что ячейка получает адрес по первому значению - A1.</p>
70
<p>В OpenPyXL можно добавлять формулы в ячейки, но есть важный нюанс: библиотека не выполняет вычисления, а лишь записывает формулу в файл. Подсчёт произойдёт уже в Excel, когда таблица будет открыта в программе.</p>
70
<p>В OpenPyXL можно добавлять формулы в ячейки, но есть важный нюанс: библиотека не выполняет вычисления, а лишь записывает формулу в файл. Подсчёт произойдёт уже в Excel, когда таблица будет открыта в программе.</p>
71
<p>Формула в OpenPyXL задаётся как строка, начиная со знака =. Напишем код для сложения значений двух ячеек:</p>
71
<p>Формула в OpenPyXL задаётся как строка, начиная со знака =. Напишем код для сложения значений двух ячеек:</p>
72
page["A1"] = 10 page["A2"] = 20 page["A3"] = "=SUM(A1:A2)"<p>В ячейке A3 появится формула =SUM(A1:A2). Если открыть файл в Excel, программа автоматически посчитает сумму и покажет результат - 30.</p>
72
page["A1"] = 10 page["A2"] = 20 page["A3"] = "=SUM(A1:A2)"<p>В ячейке A3 появится формула =SUM(A1:A2). Если открыть файл в Excel, программа автоматически посчитает сумму и покажет результат - 30.</p>
73
<p>Попробуем прочесть значение ячейки с формулой:</p>
73
<p>Попробуем прочесть значение ячейки с формулой:</p>
74
print(page["A3"].value)<p>Получим результат в виде строки =SUM(A1:A2), а не число 30. OpenPyXL хранит формулу, но не результат вычисления.</p>
74
print(page["A3"].value)<p>Получим результат в виде строки =SUM(A1:A2), а не число 30. OpenPyXL хранит формулу, но не результат вычисления.</p>
75
<p>Если требуется провести анализ данных, то придётся воспользоваться другими инструментами, например библиотекой<a>Pandas</a>или<a>Matplotlib</a>.</p>
75
<p>Если требуется провести анализ данных, то придётся воспользоваться другими инструментами, например библиотекой<a>Pandas</a>или<a>Matplotlib</a>.</p>
76
<p>OpenPyXL применяют в разных задачах. Посмотрим несколько примеров, где библиотека экономит время.</p>
76
<p>OpenPyXL применяют в разных задачах. Посмотрим несколько примеров, где библиотека экономит время.</p>
77
<p>Чтобы работать с данными в Python, необходимо перенести их из табличного файла. Сделать это можно с помощью знакомого цикла for и метода iter_rows. Посмотрим на пример их использования.</p>
77
<p>Чтобы работать с данными в Python, необходимо перенести их из табличного файла. Сделать это можно с помощью знакомого цикла for и метода iter_rows. Посмотрим на пример их использования.</p>
78
<p>Представим, что у нас есть таблица акционеров компании, где в первом столбце записано имя человека, а во втором - фамилия. Наша задача - написать каждому из них приглашение на собрание акционеров. Это можно сделать вручную, но адресатов так много, что придётся очень долго копировать и перепроверять данные во избежание ошибок. Чтобы сэкономить время, напишем код, который будет читать таблицу построчно, собирать из двух ячеек одно обращение и выводить его на экран.</p>
78
<p>Представим, что у нас есть таблица акционеров компании, где в первом столбце записано имя человека, а во втором - фамилия. Наша задача - написать каждому из них приглашение на собрание акционеров. Это можно сделать вручную, но адресатов так много, что придётся очень долго копировать и перепроверять данные во избежание ошибок. Чтобы сэкономить время, напишем код, который будет читать таблицу построчно, собирать из двух ячеек одно обращение и выводить его на экран.</p>
79
from openpyxl import load_workbook # открываем Excel-файл book = load_workbook("people.xlsx") page = book.active # перебираем строки с именами и фамилиями for row in page.iter_rows(min_row=2, values_only=True): name, surname = row # пропускаем пустые строки if not name or not surname: continue message = f"Уважаемый(ая) {name} {surname}, приглашаем вас на собрание акционеров!" print(message)<p>Файл загружается знакомым load_workbook, и чтение данных идёт построчно. Первая строка обычно бывает заголовком таблицы, поэтому чтение начинается со второй. В сам цикл мы добавили оператор continue для пропуска строк, в которых нет имени или фамилии.</p>
79
from openpyxl import load_workbook # открываем Excel-файл book = load_workbook("people.xlsx") page = book.active # перебираем строки с именами и фамилиями for row in page.iter_rows(min_row=2, values_only=True): name, surname = row # пропускаем пустые строки if not name or not surname: continue message = f"Уважаемый(ая) {name} {surname}, приглашаем вас на собрание акционеров!" print(message)<p>Файл загружается знакомым load_workbook, и чтение данных идёт построчно. Первая строка обычно бывает заголовком таблицы, поэтому чтение начинается со второй. В сам цикл мы добавили оператор continue для пропуска строк, в которых нет имени или фамилии.</p>
80
<p>Внутри цикла формируется строка с приглашением, которая выводится на печать. Теперь можем не переживать, что пропустим кого-то из таблицы.</p>
80
<p>Внутри цикла формируется строка с приглашением, которая выводится на печать. Теперь можем не переживать, что пропустим кого-то из таблицы.</p>
81
<p>У нас есть файл sales.xlsx со списком продаж. Нужно подготовить отчёт для коллег: посчитать стоимость объёма каждой позиции, умножив количество на цену, и добавить новый столбец с итогом.</p>
81
<p>У нас есть файл sales.xlsx со списком продаж. Нужно подготовить отчёт для коллег: посчитать стоимость объёма каждой позиции, умножив количество на цену, и добавить новый столбец с итогом.</p>
82
<p>Логика работы будет такой:</p>
82
<p>Логика работы будет такой:</p>
83
<ul><li>Откроем файл в Pandas, превратим данные в DataFrame (структура данных библиотеки) и проведём необходимый расчёт. Готовую таблицу сохраним в новый файл Excel report.xlsx.</li>
83
<ul><li>Откроем файл в Pandas, превратим данные в DataFrame (структура данных библиотеки) и проведём необходимый расчёт. Готовую таблицу сохраним в новый файл Excel report.xlsx.</li>
84
<li>Откроем его в OpenPyXL и приведём в порядок: укажем шрифт заголовков, добавим заливку и увеличим ширину первого столбца для удобства чтения.</li>
84
<li>Откроем его в OpenPyXL и приведём в порядок: укажем шрифт заголовков, добавим заливку и увеличим ширину первого столбца для удобства чтения.</li>
85
</ul><p>Чтобы это сделать, напишем код:</p>
85
</ul><p>Чтобы это сделать, напишем код:</p>
86
import pandas as pd from openpyxl import load_workbook from openpyxl.styles import Font, PatternFill # Читаем исходный файл через Pandas df = pd.read_excel("sales.xlsx") # Создаём итоговый столбец с результатом расчёта df["Стоимость"] = df["Количество"] * df["Цена"] # Записываем результат в новый файл Excel df.to_excel("report.xlsx", index=False) # Открываем файл через OpenPyXL wb = load_workbook("report.xlsx") ws = wb.active # Задаём шрифт, заливку и ширину первого столбца ws["A1"].font = Font(bold=True) ws["A1"].fill = PatternFill("solid", fgColor="CCCCCC") ws.column_dimensions["A"].width = 25 # Сохраняем изменения wb.save("report.xlsx")<p>Работая с файлами Excel через OpenPyXL, важно понимать, какие форматы поддерживаются и какие есть ограничения. Это поможет избежать ошибок и сэкономить время.</p>
86
import pandas as pd from openpyxl import load_workbook from openpyxl.styles import Font, PatternFill # Читаем исходный файл через Pandas df = pd.read_excel("sales.xlsx") # Создаём итоговый столбец с результатом расчёта df["Стоимость"] = df["Количество"] * df["Цена"] # Записываем результат в новый файл Excel df.to_excel("report.xlsx", index=False) # Открываем файл через OpenPyXL wb = load_workbook("report.xlsx") ws = wb.active # Задаём шрифт, заливку и ширину первого столбца ws["A1"].font = Font(bold=True) ws["A1"].fill = PatternFill("solid", fgColor="CCCCCC") ws.column_dimensions["A"].width = 25 # Сохраняем изменения wb.save("report.xlsx")<p>Работая с файлами Excel через OpenPyXL, важно понимать, какие форматы поддерживаются и какие есть ограничения. Это поможет избежать ошибок и сэкономить время.</p>
87
<ul><li><strong>.xlsx</strong> - основной формат, с которым работает OpenPyXL. Это современный стандарт Excel, начиная с версии 2007.</li>
87
<ul><li><strong>.xlsx</strong> - основной формат, с которым работает OpenPyXL. Это современный стандарт Excel, начиная с версии 2007.</li>
88
<li><strong>.xlsm</strong> - файлы с макросами. OpenPyXL открывает и сохраняет их, но не умеет работать с самими макросами.</li>
88
<li><strong>.xlsm</strong> - файлы с макросами. OpenPyXL открывает и сохраняет их, но не умеет работать с самими макросами.</li>
89
</ul><p>OpenPyXL<strong>не поддерживает.xls</strong> - старый формат Excel (до 2007 года). Для таких файлов используют<a>библиотеку xlrd</a>или предварительно сохраняют документ в формате .xlsx.</p>
89
</ul><p>OpenPyXL<strong>не поддерживает.xls</strong> - старый формат Excel (до 2007 года). Для таких файлов используют<a>библиотеку xlrd</a>или предварительно сохраняют документ в формате .xlsx.</p>
90
<ul><li><strong>Формулы.</strong>Как мы уже обсуждали, OpenPyXL не пересчитывает формулы, а лишь сохраняет их в файле. Итоговые значения появятся только при открытии документа в Excel. Поэтому делать сложные расчёты с помощью библиотеки не получится.</li>
90
<ul><li><strong>Формулы.</strong>Как мы уже обсуждали, OpenPyXL не пересчитывает формулы, а лишь сохраняет их в файле. Итоговые значения появятся только при открытии документа в Excel. Поэтому делать сложные расчёты с помощью библиотеки не получится.</li>
91
<li><strong>Стили и оформление.</strong>OpenPyXL поддерживает большинство базовых стилей (шрифты, цвета, заливки), но не все сложные элементы, доступные в табличном редакторе. Например, условное форматирование реализовано частично, поэтому лучше всего делать его в OpenPyXL.</li>
91
<li><strong>Стили и оформление.</strong>OpenPyXL поддерживает большинство базовых стилей (шрифты, цвета, заливки), но не все сложные элементы, доступные в табличном редакторе. Например, условное форматирование реализовано частично, поэтому лучше всего делать его в OpenPyXL.</li>
92
</ul><ul><li>Если у вас старый файл .xls, сохраните его в Excel как .xlsx перед работой.</li>
92
</ul><ul><li>Если у вас старый файл .xls, сохраните его в Excel как .xlsx перед работой.</li>
93
<li>Для сложных задач - например, с анализом данных - используйте комбинацию: Pandas для обработки данных и OpenPyXL для оформления и экспорта файла.</li>
93
<li>Для сложных задач - например, с анализом данных - используйте комбинацию: Pandas для обработки данных и OpenPyXL для оформления и экспорта файла.</li>
94
<li>Проверяйте результат в Excel, особенно если используете формулы или сложное форматирование.</li>
94
<li>Проверяйте результат в Excel, особенно если используете формулы или сложное форматирование.</li>
95
</ul><p>Мы разобрали основные возможности OpenPyXL: от установки и первых шагов до работы с листами, ячейками, стилями и формулами. Эта библиотека пригодится, когда требуется автоматизировать рутинные операции в Excel, подготовить отчёт или оформить таблицу.</p>
95
</ul><p>Мы разобрали основные возможности OpenPyXL: от установки и первых шагов до работы с листами, ячейками, стилями и формулами. Эта библиотека пригодится, когда требуется автоматизировать рутинные операции в Excel, подготовить отчёт или оформить таблицу.</p>
96
<p>Советы для новичков:</p>
96
<p>Советы для новичков:</p>
97
<ul><li>Начинайте с простых практических задач: создание файла, заполнение ячеек, сохранение документа и так далее.</li>
97
<ul><li>Начинайте с простых практических задач: создание файла, заполнение ячеек, сохранение документа и так далее.</li>
98
<li>Не бойтесь<a>официальной документации</a>: примеры кода понятны даже на английском, а перевод можно сделать онлайн-сервисами.</li>
98
<li>Не бойтесь<a>официальной документации</a>: примеры кода понятны даже на английском, а перевод можно сделать онлайн-сервисами.</li>
99
<li>Комбинируйте OpenPyXL с Pandas для анализа.</li>
99
<li>Комбинируйте OpenPyXL с Pandas для анализа.</li>
100
<li>Для построения сложных визуализаций комбинируйте OpenPyXL с <a>Matplotlib</a>. OpenPyXL умеет создавать стандартные графики Excel, но поддерживает только базовые типы диаграмм: линейные, столбчатые, круговые и гистограммы. В Matplotlib можно работать с точной настройкой шкал, менять отдельные элементы графика, комбинировать несколько систем координат, накладывать слои и создавать сложные визуализации.</li>
100
<li>Для построения сложных визуализаций комбинируйте OpenPyXL с <a>Matplotlib</a>. OpenPyXL умеет создавать стандартные графики Excel, но поддерживает только базовые типы диаграмм: линейные, столбчатые, круговые и гистограммы. В Matplotlib можно работать с точной настройкой шкал, менять отдельные элементы графика, комбинировать несколько систем координат, накладывать слои и создавать сложные визуализации.</li>
101
-
</ul><a>Курс с трудоустройством: "Профессия Python-разработчик + ИИ" Узнать о курсе</a>
101
+
</ul><p>Python для всех</p>
102
+
<p>Вы освоите Python на практике и создадите проекты для портфолио - телеграм-бот, веб-парсер и сайт с нуля. А ещё получите готовый план выхода на удалёнку и фриланс. Спикер - руководитель отдела разработки в "Сбере".</p>
103
+
<p><a>Пройти бесплатно</a></p>
104
+
<a><b>Бесплатный курс по разработке на Python ➞</b>Пройдите бесплатный курс по Python и создайте с нуля телеграм-бот, веб-парсер и сайт. Спикер - руководитель отдела разработки в "Сбере". Пройти курс</a>