import os import pandas as pd from pathlib import Path import sys def merge_transaction_data(): # 获取用户输入的路径 input_path_str = input("请输入包含 Excel 文件的文件夹路径: ").strip() input_dir = Path(input_path_str) # 检查路径是否有效 if not input_dir.is_dir(): print(f"错误:提供的路径 '{input_path_str}' 不是一个有效的目录。") return all_data = [] target_sheet = "交易流水" # 获取目录下所有的 excel 文件 (支持 .xlsx 和 .xls) files = list(input_dir.glob("*.xlsx")) + list(input_dir.glob("*.xls")) if not files: print("在该目录下未找到任何 Excel 文件。") return for file_path in files: try: # 读取指定的 sheet # 使用 pandas 的 read_excel,如果 sheet 不存在会抛出 ValueError df = pd.read_excel(file_path, sheet_name=target_sheet) if df.empty: print(f"跳过 {file_path.name}:工作表 '{target_sheet}' 为空。") continue all_data.append(df) print(f"成功读取: {file_path.name}") except ValueError: # 如果找不到指定的 sheet 名称,则跳过该文件 print(f"跳过 {file_path.name}:未找到名为 '{target_sheet}' 的工作表。") except Exception as e: print(f"处理文件 {file_path.name} 时发生错误: {e}") if all_data: # 合并所有 DataFrame merged_df = pd.concat(all_data, ignore_index=True) # 定义输出路径 output_file = input_dir / "txn_summary.xlsx" # 保存结果 # 使用 openpyxl 作为引擎以确保兼容性 merged_df.to_excel(output_file, index=False, engine='openpyxl') print("-" * 30) print(f"合并成功!") print(f"总计处理文件数: {len(all_data)}") print(f"结果已保存至: {output_file}") else: print("未找到包含 '" + target_sheet + "' 工作表的有效数据,未生成输出文件。") if __name__ == "__main__": # 确保安装了必要的库:pip install pandas openpyxl merge_transaction_data()