import os import sys import pandas as pd from pathlib import Path def merge_excel_files(input_dir): """ 合并指定目录下所有包含"交易流水"工作表的Excel文件 """ # 创建输出文件路径 output_file = os.path.join(input_dir, "txn_summary.xlsx") # 存储所有数据的列表 all_data = [] # 遍历输入目录中的所有文件 for filename in os.listdir(input_dir): if filename.endswith(('.xlsx', '.xls')): file_path = os.path.join(input_dir, filename) try: # 读取Excel文件的所有工作表 excel_file = pd.ExcelFile(file_path) # 检查是否包含"交易流水"工作表 if "交易流水" in excel_file.sheet_names: # 读取"交易流水"工作表 df = pd.read_excel(file_path, sheet_name="交易流水") # 检查数据是否为空 if not df.empty: # 添加源文件名列 df['来源文件'] = filename # 将数据添加到列表中 all_data.append(df) else: 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"成功合并 {len(all_data)} 个文件,结果已保存到: {output_file}") def main(): # 从命令行参数获取输入目录路径 if len(sys.argv) != 2: print("请提供输入目录路径作为命令行参数") print("使用方法: python merge_excel.py ") return input_dir = sys.argv[1] # 检查输入目录是否存在 if not os.path.isdir(input_dir): print(f"错误: 目录 '{input_dir}' 不存在") return # 合并Excel文件 merge_excel_files(input_dir) if __name__ == "__main__": main()