Openpyxl,电报。在 for 循环中选择活动工作表 [closed]

Openpyxl, Telegram. Selecting the active sheet in the for loop [closed]

提问人:AndreyKaO 提问时间:11/9/2023 最后编辑:AndreyKaO 更新时间:11/10/2023 访问量:60

问:


想改进这个问题吗?通过编辑这篇文章添加详细信息并澄清问题。

13天前关闭。

使用 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)

我试图将命令转移到循环中,但没有帮助

python-3.x 电报 openpyxl aiogram

评论

1赞 moken 11/9/2023
不清楚你的问题是什么。编辑并更新您的问题,明确您遇到的问题。还要注意代码示例缩进,尤其是使用 Python。可以猜到一些缩进,但我们不知道,例如,之后的所有行是否都是该循环的一部分(如果是,这是有道理的,但我们必须进行猜测)。for item in wb.sheetnames:
0赞 moken 11/9/2023
如果问题只是使用 Openpyxl 从 Excel 中提取数据,那么最小可重现示例可能不需要电报代码,只需要工作表循环和创建“text”和“mess”变量。删除不必要的代码也有助于其他人回答您的问题。

答:

0赞 AndreyKaO 11/10/2023 #1

事实证明,这要容易得多。在 Router 中,有必要使用 message.text 而不是 item

用户 moken 是对的,如果 openpyxl 在循环中正确输出所有内容,那么它就已经在 aiogram 中了