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

从桌面Excel工作簿文件夹批量提取工作表名称遇报错求助

问题分析与解决

你的代码报错核心原因是循环中误用了文件列表而非单个文件路径:openpyxl.load_workbook(files)里的files是glob返回的所有文件的列表,而load_workbook只接受单个文件路径字符串;后面files.sheetnames也是对着列表调用工作簿的属性,完全不符合逻辑。

修正后的代码(含已有文件列表的迭代实现)

不管你是通过glob生成文件列表,还是已经有手动整理好的工作簿路径列表,迭代逻辑都是一致的:遍历列表中的每个路径,逐个加载工作簿并提取表名。

import openpyxl
import glob

# 步骤1:获取所有xlsx文件路径(如果已有列表,直接用你的列表替换这部分)
path = "C:/Users/X/Desktop/Test"
workbook_paths = glob.glob(path + "/*.xlsx")

sheet_collection = []

# 步骤2:迭代每个工作簿路径
for file_path in workbook_paths:
    # 用read_only=True提升大文件处理效率,避免占用过多内存
    with openpyxl.load_workbook(file_path, read_only=True) as wb:
        # 可以同时存储文件名和对应表名,方便后续对应查看
        sheet_collection.append({
            "file": file_path.split("\\")[-1],  # 提取纯文件名,Windows用\\分割路径
            "sheets": wb.sheetnames
        })

# 打印结果示例
for item in sheet_collection:
    print(f"文件:{item['file']}")
    print(f"包含工作表:{item['sheets']}\n")

额外优化建议

  • 加入异常处理:避免单个损坏文件导致整个程序中断
sheet_collection = []
for file_path in workbook_paths:
    try:
        with openpyxl.load_workbook(file_path, read_only=True) as wb:
            sheet_collection.append({
                "file": file_path.split("\\")[-1],
                "sheets": wb.sheetnames
            })
    except Exception as e:
        print(f"处理文件 {file_path} 失败:{str(e)}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 23:55:35