c
This commit is contained in:
@@ -1,63 +0,0 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user