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

Python中遍历pd.ExcelFile工作表仅读取最后一个表的问题排查

问题原因与解决方法

原因分析

你的代码存在两个关键问题:

  1. 循环结束后,变量i会保留最后一次遍历到的工作表名,而你只在循环外执行了一次pd.read_excel,所以只会读取这最后一个符合条件的工作表。
  2. 你虽然筛选出了符合条件的工作表名并存入sheet_names_needed列表,但后续代码完全没有使用这个列表,等于白做了筛选步骤。

修正代码

如果你需要对每个符合条件的工作表都执行读取和绘图操作,应该遍历筛选后的工作表名,逐个处理:

方法一:先筛选再遍历

xls = pd.ExcelFile(file_path)
sheet_names_needed = [] 
for i in xls.sheet_names:
    if len(i) < 4:
        sheet_names_needed.append(i)

# 遍历筛选后的工作表,逐个读取并处理
for sheet_name in sheet_names_needed:
    df = pd.read_excel(file_path, sheet_name=sheet_name, skiprows=6, usecols=range(0,3)) 
    print(f"工作表【{sheet_name}】的数据:")
    print(df)
    # 在这里添加绘制图表的代码,比如折线图:
    # df.plot(kind='line', x=df.columns[0], y=df.columns[1])
    # plt.show()

方法二:直接遍历处理(更简洁)

可以省去单独的筛选列表,直接在遍历工作表名时判断并处理:

xls = pd.ExcelFile(file_path)
for sheet_name in xls.sheet_names:
    if len(sheet_name) < 4:
        df = pd.read_excel(file_path, sheet_name=sheet_name, skiprows=6, usecols=range(0,3)) 
        print(f"工作表【{sheet_name}】的数据:")
        print(df)
        # 执行绘制图表的操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 21:07:36