数据分析报告生成器
生成符合《江苏银行2025年报》排版标准的正式数据分析报告,输出 Word (.docx) + PDF 双格式。
前置条件
确保已安装依赖:
pip install python-docx docx2pdf # Word生成 + Word转PDF
如果 docx2pdf 不可用(需要Windows + Word),用 LibreOffice 做 Word→PDF 转换:
pip install python-docx
工作流程
Step 1: 读取数据源
优先使用已有的 xlsx skill 读取 Excel 文件。如果数据已经是 JSON 或用户在对话中提供,直接使用。
标准三表结构:
- 利润表:营业收入、营业成本、税费、三费、利润总额、所得税、净利润
- 资产负债表:流动资产、非流动资产、总资产、流动负债、非流动负债、总负债、所有者权益
- 现金流量表:经营活动现金流、投资活动现金流、筹资活动现金流
Step 2: 计算核心指标
从三表中自动计算:
- 总收入 = 营业收入
- 总成本 = 营业成本 + 税金及附加 + 销售费用 + 管理费用 + 财务费用
- 净利润 = 利润总额 − 所得税
- 利润率 = 净利润 ÷ 营业收入 × 100%
- 净资产利润率(ROE) = 净利润 ÷ 平均净资产 × 100%
- 资产总额、负债总额、资产负债率、流动比率、速动比率等
所有数据必须来源于原始报表,不得杜撰。
Step 3: 选择报告结构
根据数据量确定报告结构。默认 12-15 页:
- 封面(1页)
- 目录(1页)
- 核心指标概览(1页) — 5个KPI卡片
- 营业收入分析(1页) — 数据表格 + 段落
- 成本结构分析(1页) — 饼图 + 表格
- 利润分析(1页) — 推导表格
- 盈利能力指标(1页) — 比率卡片 + 要点
- 资产结构分析(1页) — 柱形图 + 变动明细
- 负债与权益结构(1页) — 堆叠柱形图 + 表格
- 资产负债表摘要(1页) — 完整数据表格
- 现金流量分析(1页) — 横向柱形图 + 明细
- 关键财务比率(1页) — 比率汇总表
- 利润表完整数据(1页) — 全行数据
- 经营总结与建议(1页) — 总结卡片 + 建议
- 封底(1页)
Step 4: 生成 Word 文档
读取并执行 scripts/generate_report.py,传入标准化后的数据。
脚本核心参数:
data: dict,包含三表数据和计算的指标output_path: 输出路径,如 "E:/财务数据分析报告.docx"title: 报告标题,如 "2025年度财务分析报告"company: 公司名称
Step 5: 转换为 PDF
用 docx2pdf 或 LibreOffice 将 .docx 转为 .pdf:
from docx2pdf import convert
convert("report.docx", "report.pdf")
如果 docx2pdf 不可用(WSL/无Office环境):
libreoffice --headless --convert-to pdf report.docx
Step 6: 质量检查
- 逐页文本提取,验证无占位符、无遗漏
- 数字合计校验(总分一致)
- 核对图表与表格数据一致性
- 页码连续,目录页码与实际页面对应
格式标准
详细排版参数见 references/report-format.md。
核心标准速览:
| 要素 | 标准 | |------|------| | 页面 | A4 (210×297mm), 左25mm 右20mm 上下20mm | | 主色 | 深蓝 #0068B7, 深红 #990000(强调) | | 字体 | SourceHanSansCN (思源黑体) | | 标题 | 25pt Medium(分隔页) → 20pt → 15pt → 10pt 正文 → 9pt 表格 | | 表格 | 深蓝表头白字,斑马纹 #F0F5FA,数值右对齐千分位 | | 图表 | 柱形图/饼图用深蓝系单色渐变,不要花哨多色 |
数据原则(硬约束)
- 所有数字必须来源于原始报表,不可杜撰
- 不确定的数据先查证,不瞎编
- 合计必须等于分项之和,校验不通过不输出
- 百分比保留2位小数
- 元单位用千分位逗号,万元/亿元统一标注
输出示例
用户说:
请对 E:\test\3、三表分析\ 下三张财务报表进行综合财务分析,生成报告
执行:
- 用 xlsx skill 读取三张表
- 计算所有核心指标
- 调用
scripts/generate_report.py传入数据 - 生成 .docx → 转 .pdf
- present_files 展示两个文件
Scan to join WeChat group