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

如何读取多个xlsm文件中的指定工作表并合并数据?

解决读取多个xlsm指定工作表并合并的问题

错误原因

你把sheet_name参数传给了glob.glob(),但这个函数仅负责匹配文件路径,根本不支持Excel工作表相关的参数,因此抛出TypeError。

正确实现步骤

1. 先获取所有目标xlsm文件路径

用glob.glob()筛选符合条件的文件路径,不要添加多余参数:

import glob
import pandas as pd

# 用原始字符串避免路径转义问题,替换成你的实际文件夹路径
file_path = r'C:\your_folder_location'
# 匹配所有非临时文件的xlsm(排除~$开头的Excel临时文件)
filenames = glob.glob(f"{file_path}\\[!~]*.xlsm")

2. 循环读取每个文件的指定工作表并处理

初始化列表存储处理后的单行数据,逐个文件完成读取、转换、收集:

processed_data = []

for file in filenames:
    # 读取指定工作表
    df_temp = pd.read_excel(file, sheet_name='MySheet')
    
    # --------------------------
    # 这里写入你的自定义处理逻辑,将df_temp转换成一行数据
    # 示例:根据需求提取或计算数据,比如汇总值、关键字段等
    single_row = pd.DataFrame({
        '来源文件': [file],
        '总销售额': [df_temp['销售额'].sum()],
        '平均单价': [df_temp['单价'].mean()],
        '有效记录数': [len(df_temp)]
    })
    # --------------------------
    
    processed_data.append(single_row)

# 合并所有单行数据
final_df = pd.concat(processed_data, ignore_index=True)

# 保存合并后的结果
final_df.to_excel('合并结果.xlsx', index=False)

可选:添加异常处理

如果担心部分文件不存在MySheet工作表,可以加try-except跳过错误文件:

processed_data = []

for file in filenames:
    try:
        df_temp = pd.read_excel(file, sheet_name='MySheet')
        # 自定义处理逻辑...
        processed_data.append(single_row)
    except Exception as e:
        print(f"处理文件 {file} 出错: {str(e)}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 21:12:16