本教程适用于以下场景:

  • 你有多个解压出来的文件夹,每个文件夹中可能有 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
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐