Привет всем! Помните — в какой-то книге, посвященной Python рассказывалось о новичке-программисте, который за пару вечеров набросал программу, сравнивающую стоимость товаров у его друзей, и конкурентов? Давайте попробуем сделать что-то подобное! А значит тема сегодняшней записи — Python и работа с Excel.
Некоторые примеры работы с Excel с помощью Python мы рассматривали ранее (создание файла, удаление определенной страницы из Excel-книги). Сегодня задача будет более интересной, и практической.
Предположим, у нас имеется прайс-лист конкурентов, и наш. Маленький такой прайс — позиций тысяч на 10000… Выглядит совершенно одинаково, только цены — разные. Как понять — где интереснее стоимость? Перебирать вручную все позиции? Долго. А что, если сделать программу, которая будет сличать позиции и сравнивать цены? Давайте попробуем.
Самое обидное, что у меня под рукой нет прайс-листов, которые нужно сравнивать. А значит — их нужно создать 🙂 В целом, планируемый алгоритм программы сводится к следующему:
- Создаем нужное количество файлов с одинаковым списком товаров
- Что бы они отличались — стоимость товаров генерируется случайным образом
- В конце — после создания всех файлов с одинаковыми списками товаров и случайной стоимостью программа сформирует еще один файл, в котором сделает сводку стоимости товара из всех файлов, и укажет — выигрываем мы, или нет по стоимости.
Начинаем кодить:
import openpyxl #Подключаем библиотеку для Python и работа с Excel
import random #Подключаем библиотеку для работы со случайными числами
quantity_files = int(input(‘Сколько файлов нужно создать?: ‘)) #Загоняем в переменную желаемое количество создаваемых файлов
Итак… Количество создаваемых файлов — у нас в переменной quantity_files. Но кроме переменной с количеством файлов у нас будут переменные, отвечающие за наименование листа в книге, начальное состояние количества файлов (сравниваем с переменной quantity_files), а кроме этого — переменные, отвечающие за колонки, с которыми нам предстоит работать. Давайте создадим переменные:
start_number_files = 1 #Переменная, отвечающая за начальное значение при подсчете создаваемых файлов
column_name_a = ‘A’ #Переменная, отвечающая за колонку A
column_name_b = ‘B’ #Переменная, отвечающая за колонку B
sheet_name = ‘Sheet’ #Имя создаваемого листа
Переменные вроде созданы. А теперь пришла пора добавить список товаров, с которыми мы и будем работать:
goods = [‘Компьютер’, ‘Калькулятор’, ‘Вентилятор’, ‘Принтер’, ‘МФУ’, ‘Телефон’, ‘Письменный стол’, ‘Газета’, ‘Наушники’, ‘Сумка’, ‘Документы’, ‘Термопаста’]
Понятно, что список товаров взят «с потолка» 🙂
Итак — переменные есть, список товаров есть. Пора создавать Excel-файлы, и забивать их информацией. Важно уточнить, что так как у нас есть некоторое количество создаваемых файлов (переменная quantity_files) — работать будем в цикле. Т.е. выполняем действия в каждом файле, пока количество созданных файлов не достигнет нужного количества.
while start_number_files <= quantity_files: #Цикл будет работать пока не будет создано запланированное количество файлов
file_ext = ‘.xlsx’ #Задаем расширение создаваемого файла
start_number_files = str(start_number_files) #Конвертируем переменную в строковую — что бы можно было объединять
file_name = start_number_files + file_ext #Получаем итоговое название файла в формате: текущий номер цикла + расширение файла
wb = openpyxl.Workbook() #Создаем Excel — файл
wb.create_sheet(sheet_name) #Создаем лист с названием из переменной sheet_name
worksheet = wb[sheet_name] #Делаем активным лист с названием из переменной sheet_name
worksheet[‘A1’] = ‘Наименование товара’ #В ячейку А1 пишем заголовок
worksheet[‘B1’] = ‘Стоимость товара’ #В ячейку B1 пишем заголовок
start_cell = 2 #начальный номер строки
for good in goods: #Начинаем цикл, отвечающий за добавление информации в файлы
start_cell = str(start_cell) #Конвертируем переменную, отвечающую за номер обрабатываемой ячейки в строковую переменную
cell_to_write = column_name_a + start_cell #Формируем переменную, состоящую из номера ячейки и столбца
worksheet[cell_to_write] = good
cell_to_write = column_name_b + start_cell
worksheet[cell_to_write] = random.randrange(1, 100) #Генерируем случайную стоимость и записываем ее в обрабатываемую ячейку
start_cell = int(start_cell)
#Конвертируем переменную в интежер
start_cell = start_cell + 1 #Увеличиваем значение переменной номера ячейки на единицу — что бы обрабатывать следующую
wb.save(file_name) #Записываем результат работы в файл
start_number_files = int(start_number_files)
start_number_files = start_number_files + 1
Полный вариант кода доступен по ссылке 🙂
Вспоминаем чек-лист, расположенный в самом начале:
- Создаем нужное количество файлов с одинаковым списком товаров
- Что бы они отличались — стоимость товаров генерируется случайным образом
- В конце — после создания всех файлов с одинаковыми списками товаров и случайной стоимостью программа сформирует еще один файл, в котором сделает сводку стоимости товара из всех файлов, и укажет — выигрываем мы или нет по стоимости.
Как видно — сегодня мы сделали два пункта из трех. Учитывая сегодняшнюю тему: Python и работа с Excel — Неплохо 😉
Третий пункт — совсем скоро!
И не забывайте кликать на рекламу! 😉