【脚本系列】如何使用 Python 脚本对不同文件夹中表头相同的 Excel 文件进行内容合并并溯源来源文件


本教程适用于你需要:

  • 自动遍历多个子目录,收集表头一致的 Excel 文件
  • 合并内容到一个总表中
  • 并记录每条数据“来源于哪个 Excel 文件”,实现可追溯(溯源)

📦 1. 安装依赖包(仅需一次)

pip install pandas openpyxl

📁 2. 示例目录结构

project_folder/
│
├── 解压结果/                     ← 设为 unzip_root
│   ├── 文件夹1/
│   │   └── report_A.xlsx
│   ├── 文件夹2/
│   │   └── report_B.xlsx
│
├── merge_with_trace.py           ← 本脚本

🧠 3. 脚本源码(已添加【来源文件】列用于溯源)

import os
import pandas as pd

# 📁 1. 解压后的根目录(根据实际修改)
unzip_root = 'C:/Users/yourname/Desktop/解压结果'

# 📄 2. 合并结果的输出文件
merged_excel_path = os.path.join(unzip_root, '溯源结果.xlsx')

# 📋 3. 用于保存所有有效 Excel 表的数据列表
all_data = []

# 🔍 4. 遍历所有子文件夹和 Excel 文件
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:
                df = pd.read_excel(file_path)

                # ✅ 跳过空表格(只有表头或全为空行)
                if df.dropna(how='all').shape[0] > 1:
                    # ✨ 添加溯源信息(来源文件名 + 相对路径)
                    relative_path = os.path.relpath(file_path, unzip_root)
                    df['来源文件'] = file           # 如:report_A.xlsx
                    df['来源路径'] = relative_path  # 如:文件夹1/report_A.xlsx
                    all_data.append(df)
                    print(f'✅ 已读取:{file_path}')
                else:
                    print(f'⚠️ 跳过(无有效数据):{file_path}')
            except Exception as e:
                print(f'❌ 读取失败:{file_path},错误信息:{e}')

# 📝 5. 合并所有读取到的数据并保存
if all_data:
    merged_df = pd.concat(all_data, ignore_index=True)
    merged_df.to_excel(merged_excel_path, index=False)
    print(f'\n🎉 合并完成!结果文件保存为:{merged_excel_path}')
else:
    print('\n❌ 没有发现可合并的数据文件。')

📌 4. 字段说明

字段名说明
来源文件当前这行数据来自的 Excel 文件名
来源路径文件的相对路径(包含子目录)

✅ 5. 如何运行

  1. 将脚本 merge_with_trace.py 放在合适位置
  2. 修改 unzip_root 为你的真实路径
  3. 运行脚本:
python merge_with_trace.py

❗ 6. 常见问题排查

错误提示说明
ValueError: No objects to concatenate所有文件都为空或读取失败
KeyError / ParserError表格结构异常,可能为模板文件或被破坏
openpyxl not found安装依赖:pip install openpyxl

🎯 总结

本脚本能自动实现:

  • 📂 批量读取多层目录 Excel
  • 合并内容并排除空数据
  • 🔍 记录数据来源,方便溯源
  • 💾 生成可导入的数据文件,便于汇总分析
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值