【脚本系列】如何使用 Python 脚本对不同文件夹中表头相同的 Excel 文件进行内容合并
·
本教程适用于以下场景:
- 你有多个解压出来的文件夹,每个文件夹中可能有 Excel 表格
- 所有 Excel 的表头结构一致
- 你希望自动遍历这些文件夹,并合并所有有数据的 Excel
🧾 1. 项目结构建议
project_folder/
│
├── 解压结果/ # 所有解压后的文件夹和 Excel 文件
│ ├── folder1/
│ │ └── data1.xlsx
│ ├── folder2/
│ │ └── data2.xlsx
│
├── merge_excel_script.py # 本脚本
📦 2. 安装依赖
pip install pandas openpyxl
🧠 3. 脚本源码(附详细注释)
import os
import pandas as pd
# 📁 1. 设置解压后的根目录路径(修改为你自己的路径)
unzip_root = 'C:/Users/yourname/Desktop/解压结果' # 📌 修改路径
# 📄 2. 设置合并后的 Excel 输出路径
merged_excel_path = os.path.join(unzip_root, '合并结果.xlsx')
# 📋 3. 初始化一个列表,保存所有读取成功的 Excel 数据
merged_data = []
# 🔍 4. 遍历所有子文件夹与文件
for root, dirs, files in os.walk(unzip_root):
for file in files:
if file.endswith('.xlsx') or file.endswith('.xls'):
file_path = os.path.join(root, file)
try:
# 读取 Excel 表格
df = pd.read_excel(file_path)
# 只保留表头下有实际数据的表格(即至少一行非空)
if not df.empty and df.dropna(how='all').shape[0] > 0:
merged_data.append(df)
print(f'✅ 已合并:{file_path}')
else:
print(f'⚠️ 跳过空表:{file_path}')
except Exception as e:
print(f'❌ 读取失败:{file_path},错误:{e}')
# 💾 5. 合并所有数据并导出为 Excel 文件
if merged_data:
final_df = pd.concat(merged_data, ignore_index=True)
final_df.to_excel(merged_excel_path, index=False)
print(f'\n🎉 合并完成!保存路径:{merged_excel_path}')
else:
print('\n❌ 没有发现可合并的数据表。')
✅ 4. 使用方式
你可以通过以下方式运行脚本:
python3 merge_excel_script.py
或者在 VSCode/PyCharm 中点击运行。
📌 5. 注意事项与建议
| 问题 | 说明 | 解决建议 |
|---|---|---|
| 表头不同 | 会导致合并失败或列错乱 | 请确保所有 Excel 表的列顺序、列名完全一致 |
| 数据为空 | 可能是模板文件、未填报表 | 脚本已自动跳过这些表 |
| 文件编码错误 | 读取失败时常见 | 使用 openpyxl 兼容 .xlsx,.xls 可装 xlrd==1.2.0 |
| 合并后乱码 | 中文路径或内容导致 | 使用 utf-8 编码,或设置 Excel 文件格式为 UTF-8 |
更多推荐


所有评论(0)