# 一键批量合并多个Excel文件,学会这3种方法就够了

在日常办公中,我们经常需要将多个Excel文件合并成一个。无论是月度报表、季度数据还是年度统计,批量合并Excel都是办公自动化的基础技能。本文介绍3种最常用的方法,帮助你告别手动复制粘贴的低效工作。

# 方法一:Python pandas 合并法

这是最简单、最强大的方法,特别适合处理大量文件。

# 安装依赖

pip install pandas openpyxl

# 批量合并代码

import pandas as pd
import glob
import os

def merge_excel_files(folder_path, output_file='merged.xlsx'):
    """
    合并指定文件夹下所有Excel文件
    :param folder_path: 文件夹路径
    :param output_file: 输出文件名
    """
    # 获取所有Excel文件
    excel_files = glob.glob(os.path.join(folder_path, '*.xlsx'))
    
    if not excel_files:
        print("未找到Excel文件!")
        return
    
    # 读取所有文件
    df_list = []
    for file in excel_files:
        print(f"正在读取: {file}")
        df = pd.read_excel(file)
        df['来源文件'] = os.path.basename(file)  # 标记数据来源
        df_list.append(df)
    
    # 合并数据
    merged_df = pd.concat(df_list, ignore_index=True)
    
    # 保存结果
    merged_df.to_excel(output_file, index=False)
    print(f"合并完成!共 {len(excel_files)} 个文件,{len(merged_df)} 条数据")

# 使用示例
merge_excel_files('D:/月度报表/2024年', '年度汇总.xlsx')

# 运行效果

正在读取: D:/月度报表/2024年/1月.xlsx
正在读取: D:/月度报表/2024年/2月.xlsx
正在读取: D:/月度报表/2024年/3月.xlsx
...
合并完成!共 12 个文件,3650 条数据

# 方法二:按Sheet名称合并

如果你需要将多个文件中的同名Sheet合并,可以使用下面的代码:

import pandas as pd
import glob
import os

def merge_by_sheet(folder_path, sheet_name='数据', output_file='merged_by_sheet.xlsx'):
    """按Sheet名称合并"""
    excel_files = glob.glob(os.path.join(folder_path, '*.xlsx'))
    
    df_list = []
    for file in excel_files:
        try:
            df = pd.read_excel(file, sheet_name=sheet_name)
            df['来源文件'] = os.path.basename(file)
            df_list.append(df)
        except Exception as e:
            print(f"处理 {file} 时出错: {e}")
    
    if df_list:
        merged = pd.concat(df_list, ignore_index=True)
        merged.to_excel(output_file, index=False)
        print(f"合并完成!共 {len(df_list)} 个Sheet")

merge_by_sheet('D:/销售数据', sheet_name='月度汇总')

# 方法三:使用 python-office 库

程序员晚枫开发的 python-office 库提供了一行代码合并Excel的功能:

import python-office

# 一行代码合并多个Excel文件
python-office.excel.merge(r'D:/待合并文件夹', r'D:/输出路径/合并结果.xlsx')

# 三种方法对比

方法 适用场景 优点 缺点
pandas法 大量文件、复杂处理 灵活强大 需要写代码
按Sheet合并 统一模板的报表 精确匹配 需要同名Sheet
python-office 快速合并、简单场景 一行代码 功能相对简单

# 实战案例:年度销售数据汇总

某公司有12个月的销售数据,每个月一个文件,需要汇总全年数据:

import pandas as pd
import glob
from datetime import datetime

def yearly_sales_summary(data_folder):
    """年度销售汇总"""
    files = glob.glob(f"{data_folder}/*.xlsx")
    
    all_data = []
    for f in files:
        df = pd.read_excel(f)
        df['月份'] = os.path.basename(f).replace('.xlsx', '')
        all_data.append(df)
    
    # 合并
    merged = pd.concat(all_data, ignore_index=True)
    
    # 生成汇总报表
    summary = merged.groupby('产品').agg({
        '销售额': 'sum',
        '数量': 'sum',
        '利润': 'sum'
    }).round(2)
    
    summary.to_excel('年度汇总报表.xlsx')
    return summary

# 使用
yearly_sales_summary('D:/2024年销售数据')

# 注意事项

  1. 文件编码:确保源文件编码一致
  2. 表头行:如果表头有多行,指定 header 参数
  3. 数据清洗:合并前建议先检查数据格式
  4. 备份文件:重要数据操作前先备份

# 相关资源

# 总结

批量合并Excel是办公自动化的基础技能。推荐从 python-office 开始学起,简单场景用一行代码搞定;复杂需求用 pandas 处理。学会这3种方法,你的数据处理效率至少提升10倍!

Last Updated: 4/23/2026, 9:22:28 AM