feat:解析新文件

This commit is contained in:
2026-03-22 13:39:38 +08:00
parent 1a67bb52d7
commit 10fb1e0896
13 changed files with 689 additions and 12 deletions

37
main.py
View File

@@ -21,7 +21,8 @@ import process_cash_flow
# ==================== 公司配置 ====================
# 方式1: 直接在此处配置公司名称(对应 input 和 config 下的文件夹名)
# 方式2: 在项目根目录的 config.json 中配置 "company": "公司名",会覆盖此处配置
COMPANY_NAME = "泡泡玛特"
# COMPANY_NAME = "泡泡玛特"
COMPANY_NAME = "宁德时代"
def get_company_name(script_dir):
@@ -128,14 +129,14 @@ def process_file(file_path, file_type, config_dir):
return None
def merge_to_excel(balance_sheet_df, income_statement_df, cash_flow_df, output_file, company_name):
def merge_to_excel(balance_sheet_df, income_statement_df, cash_flow_df, profitability_df, output_file, company_name):
"""
将资产负债表、利润表现金流量表合并到一个 Excel 文件的不同 Tab 页
将资产负债表、利润表现金流量表、盈利能力表合并到一个 Excel 文件的不同 Tab 页
"""
print(f"\n{'='*60}")
print(f"合并 Excel 文件")
print(f"{'='*60}")
with pd.ExcelWriter(output_file, engine='openpyxl') as writer:
if balance_sheet_df is not None:
balance_sheet_df.to_excel(
@@ -145,7 +146,7 @@ def merge_to_excel(balance_sheet_df, income_statement_df, cash_flow_df, output_f
header=False
)
print(f"✓ 已添加【资产负债表】Tab{len(balance_sheet_df)}")
if income_statement_df is not None:
income_statement_df.to_excel(
writer,
@@ -154,7 +155,7 @@ def merge_to_excel(balance_sheet_df, income_statement_df, cash_flow_df, output_f
header=False
)
print(f"✓ 已添加【利润表】Tab{len(income_statement_df)}")
if cash_flow_df is not None:
cash_flow_df.to_excel(
writer,
@@ -163,7 +164,16 @@ def merge_to_excel(balance_sheet_df, income_statement_df, cash_flow_df, output_f
header=True # 现金流量表保留列名
)
print(f"✓ 已添加【现金流量表】Tab{len(cash_flow_df)}")
if profitability_df is not None:
profitability_df.to_excel(
writer,
sheet_name='盈利能力',
index=False,
header=False # 表头已写在 DataFrame 第一行
)
print(f"✓ 已添加【盈利能力】Tab{len(profitability_df)}")
print(f"\n合并完成!输出文件: {output_file}")
@@ -241,7 +251,8 @@ def main():
balance_sheet_df = None
income_statement_df = None
cash_flow_df = None
profitability_df = None
# 处理资产负债表
if 'balance' in files_by_type:
try:
@@ -263,6 +274,15 @@ def main():
'income_statement',
config_dir
)
# 从利润表原始文件构建「盈利能力」Tab
try:
profitability_df = process_income_statement.build_profitability_df(
str(files_by_type['income'])
)
except Exception as e:
print(f"⚠️ 构建盈利能力表时出错: {e}")
import traceback
traceback.print_exc()
except Exception as e:
print(f"❌ 处理利润表时出错: {e}")
import traceback
@@ -305,6 +325,7 @@ def main():
balance_sheet_df,
income_statement_df,
cash_flow_df,
profitability_df,
str(output_file),
company_name
)