Как реализовать скрипт анализа данных excel(openpyxl) таблицы в pyTelegramBot
Всем привет. У меня имеется скрипт на python, который анализирует таблицу xlsx через openpyxl. В данном скрипте ввожу месяц(месяцы разбиты по страницам), дату и после этого он показывает кто работает в указанную дату. Возможно ли данный скрипт реализовать в бота pyTelegramBot ? Может имеются примеры или статьи
import openpyxl
import subprocess
wb = openpyxl.load_workbook(filename = '/home/python/tabl/duty_ck/График дежурств.xlsx')
page = str(input("Введите месяц: "))
sheet = wb[page]
print (sheet)
while True:
#столбец
print()
column = int(input("Введите Число месяца: "))
if column == 1:
cell = 'D'
if column == 2:
cell = 'E'
if column == 3:
cell = 'F'
if column == 4:
cell = 'G'
if column == 5:
cell = 'H'
if column == 6:
cell = 'I'
if column == 7:
cell = 'J'
if column == 8:
cell = 'K'
if column == 9:
cell = 'L'
if column == 10:
cell = 'M'
if column == 11:
cell = 'N'
if column == 12:
cell = 'O'
if column == 13:
cell = 'P'
if column == 14:
cell = 'Q'
if column == 15:
cell = 'R'
if column == 16:
cell = 'S'
if column == 17:
cell = 'T'
if column == 18:
cell = 'U'
if column == 19:
cell = 'V'
if column == 20:
cell = 'W'
if column == 21:
cell = 'X'
if column == 22:
cell = 'Y'
if column == 23:
cell = 'Z'
if column == 24:
cell = 'AA'
if column == 25:
cell = 'AB'
if column == 26:
cell = 'AC'
if column == 27:
cell = 'AD'
if column == 28:
cell = 'AE'
if column == 29:
cell = 'AF'
if column == 30:
cell = 'AG'
if column == 31:
cell = 'AH'
print ("\n")
znach = column
if znach in range (1, 32):
print(znach, page, "Дежурит: ")
print ()
for i in range(2, 8):
line = cell + str(i)
user = "C" + str(i)
val = sheet[user].value
if sheet[line].value is not None:
print (val, sheet[line].value,"ч.")
i = i + 1
print ("-----------------------------------")
for i in range(8, 16):
line = cell + str(i)
user = "C" + str(i)
val = sheet[user].value
if sheet[line].value is not None:
print (val, sheet[line].value,"ч.", "Из офиса")
i = i + 1
else: print("Такой даты не существует")
print ()
Ответы (1 шт):
Автор решения: Никита Коняхин
→ Ссылка
Получилось решить проблему. Делал по примеру https://github.com/eternnoir/pyTelegramBotAPI/blob/master/examples/step_example.py Спасибо @Violet Брал данные из чаты и делал из них аргументы
def day_step(message):
chat_id = message.chat.id
day = message.text
if not day.isdigit():
msg = bot.reply_to(message, 'Введите дату цифрами')
bot.register_next_step_handler(msg, day_step)
return
user = user_dict[chat_id]
user.day = day
bot.send_message(message.chat.id, 'Выбрано: ' + user.month + ' ' + user.day)
wb = openpyxl.load_workbook('График дежурств.xlsx')
page = str(user.month)
sheet = wb[page]
column = int(user.day)