Вывести переменные из python в excel
Есть бот для тг на python. Бот запрашивает ввод данных и сохраняет в переменные. Дальше нужно эти переменные выводить в таблицу excel. проблема в том что если несколько пользователей вводят данные они перезаписываются. Подскажите, как сделать так чтобы при каждом новом вводе данных они в таблице просо записывались ниже введённых ранее.SQL не подходит.
import telebot
from telebot import types
from telebot import types
from openpyxl import Workbook, load_workbook
zakazchik = '' #Заказчик
staff = '' #Оборудование
problem = '' #Дефект
work = '' #Работы
mat = '' #Материал
worktime = '' #Время работы
waytime = '' #Время в пути
bot = telebot.TeleBot("2025230646:AAGxOrrAKP3zB1gB0gw-M9I_r7R1B337cD8")
@bot.message_handler(commands=['start'])
def send_welcome(message):
markup = types.ReplyKeyboardMarkup(resize_keyboard= True)
item1 = types.KeyboardButton('Регистрация')
markup.add(item1)
bot.send_message(message.chat.id, 'Нажмите кнопку "Регистрация" ниже. Вам нужно последовательно указать необходимые данные', reply_markup = markup)
@bot.message_handler(func=lambda m: True)
def echo_all(message):
if message.text == 'Регистрация':
bot.send_message(message.from_user.id, "Заказчик")
bot.register_next_step_handler(message, reg_zakazchik)
def reg_zakazchik(message):
global zakazchik
zakazchik = message.text
bot.send_message(message.from_user.id, "Оборудование")
bot.register_next_step_handler(message, reg_staff)
def reg_staff(message):
global staff
staff = message.text
bot.send_message(message.from_user.id, "Дефект")
bot.register_next_step_handler(message, reg_problem)
def reg_problem(message):
global problem
problem = message.text
bot.send_message(message.from_user.id, "Работы")
bot.register_next_step_handler(message, reg_work)
def reg_work(message):
global work
work = message.text
bot.send_message(message.from_user.id, "Материал")
bot.register_next_step_handler(message, reg_mat)
def reg_mat(message):
global mat
mat = message.text
bot.send_message(message.from_user.id, "Время работы")
bot.register_next_step_handler(message, reg_worktime)
def reg_worktime(message):
global worktime
worktime = message.text
bot.send_message(message.from_user.id, "Время в пути")
bot.register_next_step_handler(message, reg_waytime)
def reg_waytime(message):
global waytime
waytime = message.text
keyboard = types.InlineKeyboardMarkup()
key_yes = types.InlineKeyboardButton(text='Да', callback_data='yes')
keyboard.add(key_yes)
key_no = types.InlineKeyboardButton(text='Нет', callback_data='no')
keyboard.add(key_no)
question = "Заказчик: " + zakazchik + ". Оборудование: " + staff + ". Дефект: " + problem + ". Работа: " + work + ". Материалы: " + mat + ". Время работы: " + worktime + ". Время в пути: " + waytime
bot.send_message(message.from_user.id, text = question, reply_markup=keyboard)
@bot.callback_query_handler(func=lambda call: True)
def callback_worker(call):
if call.data == "yes":
bot.send_message(call.message.chat.id, "Запись внесена в базу данных.")
elif call.data == "no":
bot.send_message(call.message.chat.id, 'Нажмите кнопку "Регистрация" ещё раз')
bot.polling()
Ответы (1 шт):
Автор решения: ganz
→ Ссылка
Как-то так:
import xlwt
book=xlwt.Workbook()
sh=book.add_sheet('sh1')
import atextit
def sb():
global book
book.save('file/xlwt.xls')
atexit.register(sb)
@bot.callback_query_handler(func=lambda call: True)
def callback_worker(call):
if call.data == "yes":
bot.send_message(call.message.chat.id, "Запись внесена в базу данных.")
i=0
while True:
for it in enum(data): #data это список значений
sh.write(it,i,label=data[it])
i+=1
yield
elif call.data == "no":
bot.send_message(call.message.chat.id, 'Нажмите кнопку "Регистрация" ещё раз')