diff --git a/merge_excel.py b/merge_excel.py new file mode 100644 index 0000000..cb8a49a --- /dev/null +++ b/merge_excel.py @@ -0,0 +1,74 @@ +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()