Discord机器人Excel匹配问题:仅检测A2单元格,需匹配A1-A500
修正后的Discord机器人Excel匹配代码
原代码存在几个核心问题:循环范围没覆盖A1、每次循环不匹配就直接执行添加并中断遍历、重复加载工作簿浪费资源,以下是修正后的实现:
import discord import openpyxl client = discord.Client() @client.event async def on_message(message): if message.content.startswith("$text"): # 仅加载一次Excel工作簿,避免重复IO操作 wb = openpyxl.load_workbook('test.xlsx') sheet = wb['Sheet1'] user_id = f"#{message.author.id}" is_found = False # 遍历A1到A500所有单元格(range左闭右开,所以写501) for i in range(1, 501): cell_value = sheet[f"A{i}"].value if cell_value == user_id: await message.channel.send(f"{i}: I have it") is_found = True break # 找到匹配项后跳出循环 # 遍历完所有目标单元格都没匹配,才执行添加操作 if not is_found: next_row = sheet.max_row + 1 sheet[f"A{next_row}"].value = user_id wb.save('test.xlsx') await message.channel.send("Information has been generated")
关键修改说明:
- 调整循环范围为
range(1,501),确保覆盖A1到A500的所有单元格 - 新增
is_found标记变量,只有遍历完所有目标单元格确认无匹配时,才执行添加用户ID的逻辑 - 移除else分支内重复加载工作簿的冗余代码,仅在开头加载一次工作簿,提升运行效率
- 将用户ID提前赋值给变量,避免重复拼接字符串
内容的提问来源于stack exchange,提问作者kkkmm
相关产品推荐
相关产品推荐

