feat: 添加一个脚本用于合并包含“交易流水”工作表的 Excel 文件,并将结果保存为 txn_summary.xlsx

Co-authored-by: aider (ollama/gemma4:12b) <aider@aider.chat>
This commit is contained in:
2026-06-05 20:46:39 +08:00
parent fbdad0ef4d
commit d8cec42fa9
+63
View File
@@ -0,0 +1,63 @@
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()