《拒绝加班!用 Python 1分钟搞定 100 个 Excel 表格自动合并》作者: 小庄
发布日期: 2026年06月30日
预计阅读时间: 5分钟
你有没有经历过这样的场景?
周五下午5点58分,老板突然发来消息:"小王,把这100个门店的销售数据合并一下,明天要用。"
你看着文件夹里密密麻麻的Excel文件,每个都有不同的表头、不同的格式,甚至有些还有合并单元格……
手动合并?至少要加班到凌晨2点。
但今天,我要教你一个Python脚本,1分钟搞定100个Excel自动合并,准时下班不是梦!
痛点一:重复劳动
痛点二:格式混乱
痛点三:容易出错
结论:花10分钟学一个脚本,以后每次都能节省1小时以上,这笔账怎么算都划算!
如果你还没装Python,访问官网下载:https://www.python.org/
安装时记得勾选 "Add Python to PATH",这样可以在命令行直接使用。
打开命令行(Win+R,输入cmd),执行:
pip install pandas openpyxl
把所有要合并的Excel文件放在同一个文件夹里,比如:D:\销售数据\
确保:
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}')
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:\销售数据')
新建一个文本文件,命名为 merge_excel.py双击运行,或者在命令行执行:python merge_excel.py如果你想让不懂代码的同事也能用,可以打包成exe:
pip install pyinstaller
pyinstaller --onefile merge_excel.py
打包后会生成一个 merge_excel.exe,双击就能运行!
Q1:报错"No module named 'pandas'"怎么办?说明没有安装pandas,在命令行执行:
pip install pandas openpyxl
修改读取代码,指定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)
使用进阶版代码,它会自动处理不同表头,缺失的列会用NaN填充。
pd.concat 默认按文件读取顺序合并。如果需要排序:
merged_df = merged_df.sort_values(by='日期') # 按日期列排序
这个脚本不仅能合并销售数据,还能用在:
学会了这个脚本,你就是办公室里的"效率之王"!
今天分享的这个Python脚本,是我工作以来用得最多的效率工具之一。
它帮我省下了至少100小时的加班时间。
如果你也经常需要处理Excel,强烈建议花10分钟学会它。一次学习,终身受益。
你还知道哪些提高办公效率的技巧?欢迎在评论区分享!
💬 你平时处理大量Excel文件用什么方法?
💬 有没有被Excel折磨过的经历?
💬 想学更多Python办公自动化技巧吗?
点赞超过100,我继续分享:Python自动生成图表、Python发送邮件、Python定时任务……
关注我,解锁更多Python自动化技巧,让工作更轻松!