You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何借助OrderedDict遍历Excel所有工作表,读取各表B2单元格内容?

问题根源

你这段代码之所以只打印Leonardo,是因为wb = reference_workbook.active拿到的是工作簿里的活动工作表(也就是你最后打开的Sheet_3),循环的时候根本没切换到其他工作表,每次读的都是同一个Sheet_3的B2,自然只会重复输出同一个名字。

两种解决办法

办法一:用openpyxl直接遍历(适合只读指定单元格的场景)

不用引入pandas,直接用openpyxl遍历所有工作表,精准读取每个表的B2:

# 只导入需要的模块即可
from openpyxl import load_workbook

file_path = r'C:/Users/machukovich/Desktop/stackoverflow.xlsx'

# 加载工作簿
wb = load_workbook(file_path)

# 遍历所有工作表
for sheet_name in wb.sheetnames:
    # 切换到当前工作表
    current_sheet = wb[sheet_name]
    # 读取B2单元格的值
    student_name = current_sheet['B2'].value
    print(f"工作表[{sheet_name}]的学生姓名: {student_name}")
    
    # 后续可在此添加判断逻辑,示例:
    # if student_name == "Roberto":
    #     # 执行对应操作
    #     pass

办法二:结合pandas读取(适合后续要处理表中数据的场景)

如果之后还要用pandas处理工作表里的其他数据,可以这么写:

import pandas as pd

file_path = r'C:/Users/machukovich/Desktop/stackoverflow.xlsx'

# 读取所有工作表,不要跳过行(B2是第2行,pandas索引从0开始,对应iloc[1,1])
dict_of_df = pd.read_excel(file_path, sheet_name=None)

for sheet_name, df in dict_of_df.items():
    # 读取B2:iloc[行索引, 列索引],第2行对应索引1,B列对应索引1
    student_name = df.iloc[1, 1]
    print(f"工作表[{sheet_name}]的学生姓名: {student_name}")
    
    # 示例判断逻辑
    # if student_name == "Miquel Angelo":
    #     # 执行对应操作
    #     pass
额外提醒
  • 办法一更高效,因为不需要加载整个工作表的所有数据,只读取指定单元格;
  • 办法二更适合后续需要对表内数据做分析、处理的场景;
  • 注意:openpyxl的单元格行/列号从1开始计数,而pandas的iloc是从0开始的,别混淆索引。

内容的提问来源于stack exchange,提问作者machukovich

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 03:12:59