Python Excel 自动化处理工具
·
Python Excel 自动化处理工具
- 生成数据统计(文件名、sheet 数量、总行数)批量合并多个 Excel 文件的数据,并生成统计信息,适用于办公数据整合场景。
功能
- 自动读取指定文件夹下的所有 Excel 文件(支持 .xlsx/.xls)
- 合并所有 sheet 数据到新文件,并标记来源文件和 sheet 名
- 生成数据统计(文件名、sheet 数量、总行数)
使用方法
- 安装依赖:
pip install -r requirements.txt - 将待处理的 Excel 文件放入
example文件夹(或修改input_folder路径) - 运行脚本:
python excel_processor.py - 结果文件(合并数据 + 统计信息)会自动生成到根目录
示例
- 输入:
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)
更多推荐


所有评论(0)