提问人:AndreyKaO 提问时间:11/9/2023 最后编辑:AndreyKaO 更新时间:11/10/2023 访问量:60
Openpyxl,电报。在 for 循环中选择活动工作表 [closed]
Openpyxl, Telegram. Selecting the active sheet in the for loop [closed]
问:
使用 openpyxl 我获取文件(读取它)。使用循环,我得到了所有工作表的名称。接下来,我发出一个命令,通过该命令从工作表中输出数据
import openpyxl
from aiogram import Router, F
from aiogram.types import Message
from aiogram.filters import Command, CommandStart
from keyboards import reply, inline
router = Router()
wb = openpyxl.reader.excel.load_workbook(filename = "data/Inventarization 2023.xlsx", data_only = True)
for item in wb.sheetnames:
sheet = wb[item]
@router.message((F.text == item))
async def agent (message: Message):
print(sheet)
text = ""
for i in range (11, 312):
text += f"🔢 № {sheet['B' + str(i)].value}\n📅 Дата ввода: {sheet['C' + str(i)].value}\n✏️ Серийный номер: {sheet['D' + str(i)].value}\n📌 Инвентарный номер: {sheet['E' + str(i)].value}\n📝 Наименование: {sheet['F' + str(i)].value}\n🚪 Кабинет: {sheet['G' + str(i)].value}\n📚 Примечание: {sheet['H' + str(i)].value}\n\n"
for x in range(0, len(text), 4096):
mess = text[x: x + 4096]
await message.answer(mess)
我试图将命令转移到循环中,但没有帮助
答:
0赞
AndreyKaO
11/10/2023
#1
事实证明,这要容易得多。在 Router 中,有必要使用 message.text 而不是 item
用户 moken 是对的,如果 openpyxl 在循环中正确输出所有内容,那么它就已经在 aiogram 中了
评论
for item in wb.sheetnames: