nmkru
@nmkru
beginner python programmer

Как обновить Excel таблицу в VK боте (VkBottle)?

Всем, привет!
По заданию надо реализовать именно через Excel, не через БД.

Код бота работает: по запросу (нажатию клавиши) выдает данные из ексель таблицы, в ВК боте, но если во время работы бота открыть ексель-таблицу локально, внести правки, сохранить и закрыть. После еще раз запросить данные из таблицы у бота, то бот отправит старые данные.
Если бота перезагрузить, то новые данные он подтягивает.
Как сделать так, чтобы данные у бота обновлялись?

Файл с обработкой Ексель таблицы:
import openpyxl


def main():
	global book
	try:
		book = openpyxl.open('goods.xlsx',
		                     read_only=True)
		sheet = book.active		
		
		lst = []
		for row in range(1, sheet.max_row + 1):
			number_of_pos = sheet[row][0].value
			name_of_goods = sheet[row][1].value
			value_on_sklad = sheet[row][2].value
			lst.append([number_of_pos, name_of_goods, value_on_sklad])
		
		book.close()
		return lst
	
	
	except Exception as err:
		print(err)
	finally:
		book.close()



if __name__ == '__main__':
	main()


Фрагмент кода запроса данных по нажатию кнопки из ВК Бота:
lst = main()

@bot.on.message(text='Проверить наличие на складе')
async def next_step_sklad(message: Message):
		
	for zet in range(1, len(lst)):
		number_of_pos, name_of_goods, value_on_sklad = lst[zet]
		await message.answer(f'Товары на складе:\n{number_of_pos}  {name_of_goods}')
		await message.answer('\nОтправьте цифру или название товара',
		                     keyboard=(
			                     Keyboard(one_time=False, inline=False)
				                     .add(Text('Назад', payload={'cmd': 'menu_2'}), KeyboardButtonColor.NEGATIVE)
		                     ).get_json())

		

if __name__ == '__main__':
	bot.run_forever()
  • Вопрос задан
  • 83 просмотра
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
Почему они в принципе должны обновляться? В переменную lst занесли список позиций lst = main(). Потом уже работаете с этим же списком. Логично было бы переопределять lst каждый раз внутри функции проверки на складе
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы