如何用Python遍历Excel工作表提取指定单元格值(忽略无关表)
解决Excel指定单元格值提取问题:忽略特定工作表并遍历获取
你的判断完全正确——确实需要遍历所有工作表,先过滤掉那4个无需关注的表,再在剩余工作表中提取目标单元格的值,最后统一收集并打印结果就行。我结合你给出的代码片段,帮你调整成完整的实现方案:
完整代码实现
import pandas as pd # 第一步:把需要忽略的4个工作表名称填进这个列表(要和Excel里的名称完全匹配,包括大小写、空格) ignore_sheets = ["无需关注表1", "无需关注表2", "无需关注表3", "无需关注表4"] # 加载Excel文件 xl_file = pd.ExcelFile('Documents/CA= 7/Request/ScriptTestFiles/TestSheet.xlsx') # 用来存储所有有效工作表的目标单元格值 target_results = [] # 遍历所有工作表 for sheet_name in xl_file.sheet_names: # 跳过需要忽略的工作表 if sheet_name in ignore_sheets: continue # 读取当前工作表(用parse比重复调用read_excel更高效) df = xl_file.parse(sheet_name) # 提取目标单元格的值:这里以A1单元格为例(iloc是按行号、列号索引,从0开始计数) # 如果目标是B2单元格,就改成df.iloc[1, 1];如果知道列名,也可以用df.at[0, '列标题'] cell_value = df.iloc[0, 0] # 把工作表名称和对应的值配对存储,方便后续查看来源 target_results.append((sheet_name, cell_value)) # 打印最终收集到的结果 print("各有效工作表的目标单元格值:") for sheet, value in target_results: print(f"{sheet}: {value}")
关键细节说明
- 遍历与过滤:通过
xl_file.sheet_names获取Excel里所有工作表的名称列表,再用if sheet_name in ignore_sheets跳过不需要的表,确保只处理目标工作表。 - 单元格提取方式:
- 用
iloc[行号, 列号]:适合知道单元格位置的情况(注意行号列号都是从0开始,比如A1对应(0,0),B2对应(1,1))。 - 用
at[行号, 列名]:如果知道目标单元格所在的列标题,比如要取"订单号"列第一行的值,就用df.at[0, '订单号']。
- 用
- 结果存储:把工作表名称和单元格值配对存入列表,打印时能清晰看到每个值来自哪个表,避免混淆。
注意事项
- 一定要保证
ignore_sheets里的名称和Excel中的工作表名称完全一致(包括大小写、空格、特殊字符),否则过滤会失效。 - 如果目标单元格是合并单元格,pandas会把合并后的值放在合并区域的第一个单元格,所以要确认好对应的索引位置。
- 如果工作表有表头,读取时默认会把第一行作为表头,此时
iloc的行号要从表头的下一行开始计算(比如表头是第一行,那么数据行从0开始对应Excel的第二行)。
内容的提问来源于stack exchange,提问作者Molsen




