Вывести переменные из 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, 'Нажмите кнопку "Регистрация" ещё раз')
→ Ссылка