56 lines
1.6 KiB
Python
56 lines
1.6 KiB
Python
|
|
#!/usr/bin/env python3
|
|||
|
|
"""
|
|||
|
|
货币/汇率转换模板
|
|||
|
|
将指定列的金额从一种货币转换为另一种货币
|
|||
|
|
"""
|
|||
|
|
|
|||
|
|
import pandas as pd
|
|||
|
|
import sys
|
|||
|
|
from pathlib import Path
|
|||
|
|
|
|||
|
|
def main():
|
|||
|
|
# 参数配置
|
|||
|
|
file_path = "{file}"
|
|||
|
|
output_path = "{output}"
|
|||
|
|
column = "{column}" # 要转换的列名
|
|||
|
|
from_currency = "{from_currency}" # 原货币
|
|||
|
|
to_currency = "{to_currency}" # 目标货币
|
|||
|
|
rate = {rate} # 汇率(默认1,实际使用时需要提供)
|
|||
|
|
|
|||
|
|
# 读取文件
|
|||
|
|
df = pd.read_excel(file_path)
|
|||
|
|
|
|||
|
|
if column not in df.columns:
|
|||
|
|
print(f"错误: 列 '{column}' 不存在")
|
|||
|
|
print(f"可用列: {list(df.columns)}")
|
|||
|
|
sys.exit(1)
|
|||
|
|
|
|||
|
|
# 转换货币
|
|||
|
|
original_values = df[column].copy()
|
|||
|
|
df[column] = df[column] * rate
|
|||
|
|
|
|||
|
|
# 添加元数据列(可选)
|
|||
|
|
if "{add_meta}" == "true":
|
|||
|
|
df[f"{column}_original"] = original_values
|
|||
|
|
df[f"{column}_rate"] = rate
|
|||
|
|
df[f"{column}_currency"] = to_currency
|
|||
|
|
|
|||
|
|
# 保存结果
|
|||
|
|
df.to_excel(output_path, index=False)
|
|||
|
|
|
|||
|
|
print(f"货币转换完成")
|
|||
|
|
print(f"文件: {{file_path}}")
|
|||
|
|
print(f"列: {{column}}")
|
|||
|
|
print(f"从 {{from_currency}} 转换为 {{to_currency}}")
|
|||
|
|
print(f"汇率: {{rate}}")
|
|||
|
|
print(f"输出: {{output_path}}")
|
|||
|
|
|
|||
|
|
# 显示统计信息
|
|||
|
|
print(f"\n转换统计:")
|
|||
|
|
print(f" 总行数: {{len(df)}}")
|
|||
|
|
print(f" 原始总和: {{original_values.sum():.2f}} {{from_currency}}")
|
|||
|
|
print(f" 转换后总和: {{df[column].sum():.2f}} {{to_currency}}")
|
|||
|
|
|
|||
|
|
if __name__ == "__main__":
|
|||
|
|
main()
|