当前位置:首页>python>拒绝加班!用 Python 1分钟搞定 100 个 Excel 表格自动合并

拒绝加班!用 Python 1分钟搞定 100 个 Excel 表格自动合并

  • 2026-10-11 06:00:54
拒绝加班!用 Python 1分钟搞定 100 个 Excel 表格自动合并
《拒绝加班!用 Python 1分钟搞定 100 个 Excel 表格自动合并》

作者: 小庄
发布日期: 2026年06月30日
预计阅读时间: 5分钟


引言

你有没有经历过这样的场景?

周五下午5点58分,老板突然发来消息:"小王,把这100个门店的销售数据合并一下,明天要用。"

你看着文件夹里密密麻麻的Excel文件,每个都有不同的表头、不同的格式,甚至有些还有合并单元格……

手动合并?至少要加班到凌晨2点。

但今天,我要教你一个Python脚本,1分钟搞定100个Excel自动合并,准时下班不是梦!


一、为什么手动合并Excel这么痛苦?
1.1 传统方法的三大痛点

痛点一:重复劳动

•
复制→粘贴→复制→粘贴……
•
100个文件,每个10秒,也要将近17分钟
•
而且眼睛会看花,手会抽筋

痛点二:格式混乱

•
不同文件的表头可能不一样
•
有的有标题行,有的没有
•
合并后格式全乱,又要花时间调整

痛点三:容易出错

•
手动操作最大的问题就是——人会犯错
•
漏掉一个文件?复制错行?数据错位?
•
出了问题又要重新检查,时间成本翻倍
1.2 Python的优势在哪里?
对比项
手动合并
Python自动合并
时间
1-2小时
1分钟
准确率
95%(人会犯错)
100%(程序不会累)
可重复性
每次都要重做
脚本一键运行
学习成本
无
10分钟学会

结论:花10分钟学一个脚本,以后每次都能节省1小时以上,这笔账怎么算都划算!


二、准备工作(5分钟搞定)
2.1 安装Python环境

如果你还没装Python,访问官网下载:https://www.python.org/

安装时记得勾选 "Add Python to PATH",这样可以在命令行直接使用。

2.2 安装pandas库

打开命令行(Win+R,输入cmd),执行:

pip install pandas openpyxl
•
pandas:Python最强大的数据处理库
•
openpyxl:读写Excel文件的引擎
2.3 准备你的Excel文件

把所有要合并的Excel文件放在同一个文件夹里,比如:D:\销售数据\

确保:

•
所有文件都是 .xlsx 或 .xls 格式
•
每个文件的结构相似(表头一致)

三、核心代码(可直接复制使用)
3.1 基础版:合并所有Excel文件
import pandas as pd
import os

# 设置文件夹路径
folder_path = r'D:\销售数据'

# 获取所有Excel文件
excel_files = [f for f in os.listdir(folder_path) if f.endswith(('.xlsx', '.xls'))]

# 合并所有文件
all_data = []
for file in excel_files:
    file_path = os.path.join(folder_path, file)
    df = pd.read_excel(file_path)
    all_data.append(df)
    print(f'已读取: {file}')

# 合并为一个DataFrame
merged_df = pd.concat(all_data, ignore_index=True)

# 保存合并后的文件
output_path = os.path.join(folder_path, '合并结果.xlsx')
merged_df.to_excel(output_path, index=False)

print(f'\n完成!共合并 {len(excel_files)} 个文件')
print(f'保存位置: {output_path}')
3.2 进阶版:处理常见问题
import pandas as pd
import os

def merge_excel_files(folder_path, output_name='合并结果.xlsx'):
    """
    智能合并Excel文件
    - 自动跳过空文件
    - 添加来源列
    - 处理不同表头
    """
    excel_files = [f for f in os.listdir(folder_path) if f.endswith(('.xlsx', '.xls'))]

    if not excel_files:
        print("没有找到Excel文件!")
        return

    all_data = []
    skipped_files = []

    for file in excel_files:
        file_path = os.path.join(folder_path, file)
        try:
            df = pd.read_excel(file_path)

            # 跳过空文件
            if df.empty:
                skipped_files.append(file)
                continue

            # 添加来源列,方便追溯
            df['数据来源'] = file

            all_data.append(df)
            print(f'✓ 已读取: {file} ({len(df)} 行)')

        except Exception as e:
            skipped_files.append(file)
            print(f'✗ 读取失败: {file} - {str(e)}')

    if not all_data:
        print("没有成功读取任何文件!")
        return

    # 合并数据
    merged_df = pd.concat(all_data, ignore_index=True)

    # 保存结果
    output_path = os.path.join(folder_path, output_name)
    merged_df.to_excel(output_path, index=False)

    # 输出统计
    print(f'\n{"="*50}')
    print(f'合并完成!')
    print(f'- 成功合并: {len(all_data)} 个文件')
    print(f'- 跳过文件: {len(skipped_files)} 个')
    print(f'- 总行数: {len(merged_df)} 行')
    print(f'- 保存位置: {output_path}')

    if skipped_files:
        print(f'\n跳过的文件:')
        for f in skipped_files:
            print(f'  - {f}')

# 使用示例
if __name__ == '__main__':
    merge_excel_files(r'D:\销售数据')

四、使用步骤(傻瓜式操作)
4.1 方法一:直接运行脚本
1.
新建一个文本文件,命名为 merge_excel.py
2.
把上面的代码复制进去
3.
修改 folder_path 为你的文件夹路径
4.
双击运行,或者在命令行执行:python merge_excel.py
4.2 方法二:封装成可执行文件(推荐)

如果你想让不懂代码的同事也能用,可以打包成exe:

pip install pyinstaller
pyinstaller --onefile merge_excel.py

打包后会生成一个 merge_excel.exe,双击就能运行!


五、常见问题解答
Q1:报错"No module named 'pandas'"怎么办?

说明没有安装pandas,在命令行执行:

pip install pandas openpyxl
Q2:文件里有多个Sheet怎么办?

修改读取代码,指定Sheet名称:

df = pd.read_excel(file_path, sheet_name='Sheet1')

或者合并所有Sheet:

excel_file = pd.ExcelFile(file_path)
for sheet_name in excel_file.sheet_names:
    df = pd.read_excel(file_path, sheet_name=sheet_name)
    df['来源Sheet'] = sheet_name
    all_data.append(df)
Q3:不同文件表头不一样怎么办?

使用进阶版代码,它会自动处理不同表头,缺失的列会用NaN填充。

Q4:合并后数据顺序乱了?

pd.concat 默认按文件读取顺序合并。如果需要排序:

merged_df = merged_df.sort_values(by='日期')  # 按日期列排序

六、扩展应用

这个脚本不仅能合并销售数据,还能用在:

•
财务报表合并:各分公司的月度报表
•
HR数据汇总:各部门的员工信息
•
市场调研:多个问卷结果汇总
•
项目管理:多项目进度汇总

学会了这个脚本,你就是办公室里的"效率之王"!


结语

今天分享的这个Python脚本,是我工作以来用得最多的效率工具之一。

它帮我省下了至少100小时的加班时间。

如果你也经常需要处理Excel,强烈建议花10分钟学会它。一次学习,终身受益。

你还知道哪些提高办公效率的技巧?欢迎在评论区分享!


互动话题
💬 你平时处理大量Excel文件用什么方法?
💬 有没有被Excel折磨过的经历?
💬 想学更多Python办公自动化技巧吗?

点赞超过100,我继续分享:Python自动生成图表、Python发送邮件、Python定时任务……


关注我,解锁更多Python自动化技巧,让工作更轻松!

最新文章

随机文章