feat(merge_excel.py): 添加脚本以合并包含"交易流水"工作表的Excel文件
Co-authored-by: aider (ollama/qwen3-coder:30b) <aider@aider.chat>
This commit is contained in:
@@ -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 <input_directory>")
|
||||||
|
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()
|
||||||
Reference in New Issue
Block a user