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

  • 14 января, 14:44
  • 4285
  • 0

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

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

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

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

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

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

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

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

Вступление к задаче

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

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

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

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

pip install openpyxl

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

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. 

import openpyxl as xl from openpyxl.chart 
import BarChart, Reference

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

wb = xl.load_workbook('python-spreadsheet.xlsx') 
sheet = wb['Sheet1']

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

for row in range(2, sheet.max_row + 1):   
cell = sheet.cell(row, 3)

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

corrected_price = float(cell.value.replace('$','')) * 0.9 
corrected_price_cell = sheet.cell(row, 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 = Reference(sheet, min_row=2, max_row=sheet.max_row, min_col=4, max_col=4)

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

chart = BarChart() 
chart.add_data(values) 
sheet.add_chart(chart, 'e2')

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

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

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

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

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)

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



Теги: python
0 комментариев
Сортировка:
Добавить комментарий

IT Новости

Смотреть все