Python Excel 自动化处理工具

  • 生成数据统计(文件名、sheet 数量、总行数)批量合并多个 Excel 文件的数据,并生成统计信息,适用于办公数据整合场景。

功能

  • 自动读取指定文件夹下的所有 Excel 文件(支持 .xlsx/.xls)
  • 合并所有 sheet 数据到新文件,并标记来源文件和 sheet 名
  • 生成数据统计(文件名、sheet 数量、总行数)

使用方法

  1. 安装依赖:pip install -r requirements.txt
  2. 将待处理的 Excel 文件放入 example 文件夹(或修改 input_folder 路径)
  3. 运行脚本:python excel_processor.py
  4. 结果文件(合并数据 + 统计信息)会自动生成到根目录

示例

  • 输入:example/data1.xlsx(3 个 sheet,共 100 行)、example/data2.xlsx(2 个 sheet,共 50 行)
  • 输出:merged_result_20231101_120000.xlsx(合并后 150 行 + 来源标记)、merged_result_20231101_120000_stats.txt(统计信息)
import os
import pandas as pd
from datetime import datetime

def merge_excel_files(input_folder, output_file):
    """合并指定文件夹下的所有 Excel 文件到一个新文件"""
    all_data = []
    file_stats = []  # 记录每个文件的统计信息

    # 遍历文件夹下的所有 Excel 文件
    for filename in os.listdir(input_folder):
        if filename.endswith(('.xlsx', '.xls')):
            file_path = os.path.join(input_folder, filename)
            try:
                # 读取 Excel 文件的所有 sheet
                xls = pd.ExcelFile(file_path)
                for sheet_name in xls.sheet_names:
                    df = pd.read_excel(xls, sheet_name=sheet_name)
                    df['source_file'] = filename  # 添加来源文件名标记
                    df['source_sheet'] = sheet_name  # 添加来源 sheet 标记
                    all_data.append(df)
                # 记录文件统计信息
                file_stats.append({
                    'filename': filename,
                    'sheets': len(xls.sheet_names),
                    'total_rows': sum(len(pd.read_excel(xls, sheet_name=sheet)) for sheet_name in xls.sheet_names)
                })
                print(f"成功处理文件: {filename}")
            except Exception as e:
                print(f"处理文件 {filename} 失败: {e}")

    if not all_data:
        print("未找到可处理的 Excel 文件!")
        return

    # 合并所有数据并保存
    merged_df = pd.concat(all_data, ignore_index=True)
    merged_df.to_excel(output_file, index=False)
    print(f"合并完成!结果已保存至: {output_file}")

    # 生成统计信息并保存
    stats_df = pd.DataFrame(file_stats)
    stats_file = output_file.replace('.xlsx', '_stats.xlsx')
    stats_df.to_excel(stats_file, index=False)
    print(f"数据统计已保存至: {stats_file}")

if __name__ == "__main__":
    # 输入文件夹(示例文件夹,可修改为实际路径)
    input_folder = "example"
    # 输出文件名(带时间戳,避免覆盖)
    timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
    output_file = f"merged_result_{timestamp}.xlsx"
    # 执行合并
    merge_excel_files(input_folder, output_file)
Logo

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

更多推荐