Как автоматизировать таблицу Excel в Python?

Опубликовано: 16 Мая, 2021

Прежде чем вы прочтете эту статью и изучите автоматизацию на Python ... давайте посмотрим видео, в котором Кристиан Дженко (талантливый программист и предприниматель) объясняет важность кодирования на примере автоматизации.

Вы, возможно, громко рассмеялись после просмотра этого видео, и вы наверняка поняли важность автоматизации в реальной жизни. А теперь перейдем к теме ...

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

Рассмотрим сценарий, в котором вас просят создать учетную запись на веб-сайте для 30 000 сотрудников. Как бы вы себя чувствовали? Конечно, вам будет неудобно выполнять эту задачу вручную и многократно. Кроме того, это займет слишком много времени, что не является разумным решением.

А теперь представьте себе жизнь сотрудников, которые занимаются вводом данных. Их задача - взять данные из таблиц, таких как Excel или Google Sheet, и вставить их в другое место. Они просматривают разные веб-сайты и журналы, собирают оттуда данные, а затем вставляют их в базу данных. Им также необходимо произвести расчеты для записей.

Как правило, доход зависит от выполнения этой работы. Больше заявок, более высокая зарплата ( конечно, каждый хочет более высокую зарплату на своей работе ).

Но не кажется ли вам скучным повторять одно и то же постоянно?

Теперь вопрос… « Как я могу сделать это быстро? »,« Как мне автоматизировать свою работу?

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

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

Будет здорово, если вы уже знаете основную концепцию Python. Мы возьмем пример листа Excel с некоторыми записями и изучим процесс автоматизации. Мы собираемся написать программу на Python, которая сможет обрабатывать тысячи электронных таблиц менее чем за секунду. В восторге??? Давайте начнем…

Введение в задачу

Обработка или обновление тысяч таблиц вручную займет слишком много времени. Это может занять часы, дни или даже месяцы. Мы напишем программу на Python для автоматизации этой задачи. Мы будем работать с таблицей, представленной на картинке ниже.

В этой таблице у нас есть записи для всех видов транзакций, но, скажем, из-за ошибки (ошибки человека или системной ошибки) цена продукта, указанная в третьем столбце, неверна. Допустим, нам нужно уменьшить цену на 10% (умножить цену на 0,9 и пересчитать значение). Вы можете выполнить эту задачу вручную, используя математическую формулу в четвертом столбце, но это займет слишком много времени (может быть, 1 неделя или две недели), если есть тысячи записей.

Мы напишем программу на Python для автоматизации этого процесса. Также мы добавим к нему диаграмму. Наша программа на Python выполнит эту задачу за нас за считанные секунды.

Давайте войдем в зону кодирования

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

 pip установить openpyxl

Теперь мы можем импортировать этот пакет для работы с нашей таблицей. Перед этим добавьте электронную таблицу в папку вашего проекта. Теперь создайте файл app.py в своей папке и запишите приведенный ниже код.

Python




import openpyxl as xl
from openpyxl.chart import BarChart, Reference
wb = xl.load_workbook( 'python-spreadsheet.xlsx' )
sheet = wb[ 'Sheet1' ]
for row in range ( 2 , sheet.max_row + 1 ):
cell = sheet.cell(row, 3 )
corrected_price = float (cell.value.replace( '$' ,'')) * 0.9
corrected_price_cell = sheet.cell(row, 4 )
corrected_price_cell.value = corrected_price
values = Reference(sheet, min_row = 2 , max_row = sheet.max_row, min_col = 4 , max_col = 4 )
chart = BarChart()
chart.add_data(values)
sheet.add_chart(chart, 'e2' )
wb.save( 'python-spreadsheet2.xlsx' )

Давайте разберемся с приведенным выше кодом

Мы собираемся пошагово объяснить код, написанный выше, чтобы понять весь процесс.

Шаг 1. Для работы с нашим пакетом импорта электронных таблиц openpyxl (мы использовали псевдоним xl, чтобы сделать наш код чище и короче). Кроме того, чтобы добавить диаграмму в нашу электронную таблицу, нам нужно импортировать два класса BarChart и Reference.

 импортировать openpyxl как xl
из openpyxl.chart import BarChart, Reference

Шаг 2. Теперь нам нужно загрузить книгу Excel python-spreadhsheet.xlsx. Запишите приведенный ниже код. wb возвращает объект, и с помощью этого объекта мы получаем доступ к Sheet1 из книги.

 wb = xl.load_workbook ('python-spreadsheet.xlsx')
лист = wb ['Лист1']

Шаг 3. Чтобы получить доступ к записям из строк со 2 по 4 в третьем столбце (запись для столбца цен), нам нужно добавить в него цикл for. Мы сохраняем эту запись в переменной ячейке.

 для строки в диапазоне (2, sheet.max_row + 1):
    ячейка = sheet.cell (строка, 3)

Шаг 4. Теперь нам нужно рассчитать скорректированные цены. Таким образом, мы умножаем значения, сохраненные в переменной ячейки, на 0,9 . После завершения расчета нам нужно добавить все исправленные цены в новый столбец (столбец 4). Чтобы добавить новый столбец, мы получим ссылку на ячейку в данной строке, но в четвертом столбце. После создания ячейки нам нужно установить исправленные значения цен в этой ячейке (четвертый столбец).

 corrected_price = float (cell.value.replace ('$', '')) * 0,9
corrected_price_cell = sheet.cell (строка, 4)
corrected_price_cell.value = corrected_price

Шаг 5. Половина работы сделана. Мы рассчитали обновленную цену и добавили ее в четвертый столбец. Теперь нам нужно добавить диаграмму на текущий лист. Для создания диаграммы нам нужно выбрать диапазон значений.

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

Нам нужно использовать ссылочный класс для выбора диапазона значений. Мы собираемся добавить в этот конструктор пять аргументов. Первый аргумент - это лист, над которым мы работаем. Следующие два аргумента min_row = 2 и max_row = sheet.max_row будут выбирать ячейки от строки 2 до строки 4. Чтобы выбрать записи только из четвертого столбца, нам нужно передать еще два аргумента min_col = 4 и max_col = 4. Сохраните результат в переменной 'values'.

 values = Ссылка (лист, min_row = 2, max_row = sheet.max_row, min_col = 4, max_col = 4)

Шаг 6. Теперь мы готовы создать диаграмму. Мы создадим экземплярную диаграмму для класса BarChart. Как только он будет создан, добавьте значения в эту диаграмму. После этого добавьте эту диаграмму на лист в строку 2 и столбец 5 (e2).

 chart = BarChart ()
chart.add_data (значения)
sheet.add_chart (диаграмма, 'e2')

Шаг 7. Теперь нам нужно сохранить все обновленные записи и диаграмму, которую мы создали в приведенном выше коде. Мы сохраним это в новом файле python-spreadsheet2.xlsx, потому что мы не хотим случайно перезаписать исходный файл, если в нашей программе есть ошибка.

Запустите свою программу, и все готово. Будет создан недавно обновленный файл python-spreadhsheet2.xlsx с обновленными ценами и графиками. Ниже приведен скриншот того же.

Шаг 8. Наша программа завершена, но если вы воспользуетесь приведенным выше кодом, она не сможет автоматизировать процесс создания тысяч электронных таблиц. Эта программа полагается только на конкретный файл python-spreadsheet.xlsx.

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

Python




import openpyxl as xl
from openpyxl.chart import BarChart, Reference
def process_workbook(filename):
wb = xl.load_workbook(filename)
sheet = wb[ 'Sheet1' ]
for row in range ( 2 , sheet.max_row + 1 ):
cell = sheet.cell(row, 3 )
corrected_price = float (cell.value.replace( '$' , '')) * 0.9
corrected_price_cell = sheet.cell(row, 4 )
corrected_price_cell.value = corrected_price
values = Reference(sheet, min_row = 2 , max_row = sheet.max_row, min_col = 4 , max_col = 4 )
chart = BarChart()
chart.add_data(values)
sheet.add_chart(chart, 'e2' )
wb.save(filename)

Ссылка на Github для кода с прикрепленной таблицей: автоматизация Python

Последняя мысль

Это был лишь один пример использования Python для автоматизации повторяющихся скучных задач. Но помните, что автоматизация - это не только электронные таблицы Excel. Есть так много вещей, которые мы можем автоматизировать. Вы можете искать на различных сайтах, таких как Github, и многие вещи можно автоматизировать с помощью Python.

Внимание компьютерщик! Укрепите свои основы с помощью Базового курса программирования Python и изучите основы.

Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.