Привет всем! Помните — в какой-то книге, посвященной 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 — Неплохо 😉
Третий пункт — совсем скоро!
И не забывайте кликать на рекламу! 😉
Support the Blog!
Running a blog takes a lot of effort, time, and passion. Your donations help improve the content, inspire new ideas, and keep the project going.
If you’ve enjoyed the blog’s materials, any support would mean the world to me. Thank you for being here! ❤️