report-generator

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Report Generator

报告生成器

Create professional, data-driven reports with charts, tables, and narrative text. Perfect for business reports, analytics dashboards, status updates, and automated reporting pipelines.
创建包含图表、表格和说明文字的专业数据驱动型报告。适用于商务报告、分析仪表盘、状态更新和自动化报告流水线。

Quick Start

快速开始

python
from scripts.report_gen import ReportGenerator
python
from scripts.report_gen import ReportGenerator

Create a simple report

创建简单报告

report = ReportGenerator("Monthly Sales Report") report.add_text("This report summarizes sales performance for Q4 2024.") report.add_table(sales_data, title="Sales by Region") report.add_chart(sales_data, chart_type="bar", title="Revenue by Month") report.add_text("Key findings: Revenue increased 25% quarter-over-quarter.") report.generate().save("sales_report.pdf")
report = ReportGenerator("月度销售报告") report.add_text("本报告总结了2024年第四季度的销售业绩。") report.add_table(sales_data, title="各地区销售额") report.add_chart(sales_data, chart_type="bar", title="月度收入趋势") report.add_text("关键发现:季度收入环比增长25%。") report.generate().save("sales_report.pdf")

From template

从模板创建

report = ReportGenerator.from_template("executive_summary") report.set_data(data_dict) report.generate().save("exec_summary.pdf")
undefined
report = ReportGenerator.from_template("执行摘要") report.set_data(data_dict) report.generate().save("exec_summary.pdf")
undefined

Features

功能特性

  • Multiple Output Formats: PDF, HTML
  • Rich Content: Text, tables, charts, images, headers
  • Chart Types: Bar, line, pie, scatter, area, heatmap
  • Table Formatting: Auto-styling, conditional formatting
  • Templates: Pre-built report templates
  • Branding: Logo, colors, fonts, headers/footers
  • Sections: Table of contents, page numbers, appendices
  • Data Integration: CSV, DataFrame, dict inputs
  • 多输出格式:PDF、HTML
  • 丰富内容:文本、表格、图表、图片、标题
  • 图表类型:柱状图、折线图、饼图、散点图、面积图、热力图
  • 表格格式化:自动样式、条件格式化
  • 模板支持:预构建报告模板
  • 品牌定制:Logo、配色、字体、页眉/页脚
  • 章节结构:目录、页码、附录
  • 数据集成:CSV、DataFrame、字典输入

API Reference

API 参考

Initialization

初始化

python
undefined
python
undefined

New report

新建报告

report = ReportGenerator("Report Title") report = ReportGenerator("Report Title", subtitle="Q4 2024 Analysis")
report = ReportGenerator("报告标题") report = ReportGenerator("报告标题", subtitle="2024年第四季度分析")

From template

从模板创建

report = ReportGenerator.from_template("quarterly_review")
report = ReportGenerator.from_template("季度回顾")

With config

带配置初始化

report = ReportGenerator("Title", config={ "page_size": "letter", "orientation": "portrait", "margins": {"top": 1, "bottom": 1, "left": 0.75, "right": 0.75} })
undefined
report = ReportGenerator("标题", config={ "page_size": "letter", "orientation": "portrait", "margins": {"top": 1, "bottom": 1, "left": 0.75, "right": 0.75} })
undefined

Report Metadata

报告元数据

python
undefined
python
undefined

Title and subtitle

标题和副标题

report.set_title("Annual Report 2024") report.set_subtitle("Financial Performance Analysis")
report.set_title("2024年度报告") report.set_subtitle("财务业绩分析")

Author and date

作者和日期

report.set_author("Analytics Team") report.set_date("December 2024") report.set_date_auto() # Use today
report.set_author("分析团队") report.set_date("2024年12月") report.set_date_auto() # 使用当前日期

Organization

组织信息

report.set_organization("Acme Corporation") report.set_logo("logo.png")
undefined
report.set_organization("Acme公司") report.set_logo("logo.png")
undefined

Adding Content

添加内容

Text Content

文本内容

python
undefined
python
undefined

Simple paragraph

简单段落

report.add_text("This is a paragraph of analysis text.")
report.add_text("这是一段分析文本。")

Styled text

样式文本

report.add_text("Important finding!", style="highlight") report.add_text("Key metric: 42%", style="metric")
report.add_text("重要发现!", style="highlight") report.add_text("关键指标:42%", style="metric")

Headers

标题

report.add_heading("Executive Summary", level=1) report.add_heading("Revenue Analysis", level=2) report.add_heading("By Region", level=3)
report.add_heading("执行摘要", level=1) report.add_heading("收入分析", level=2) report.add_heading("按地区划分", level=3)

Bullet points

项目符号列表

report.add_bullets([ "Revenue increased 25% YoY", "Customer acquisition up 15%", "Churn rate decreased to 3%" ])
report.add_bullets([ "收入同比增长25%", "客户获取量提升15%", "客户流失率降至3%" ])

Numbered list

编号列表

report.add_numbered_list([ "Expand to European markets", "Launch mobile application", "Implement AI-driven analytics" ])
undefined
report.add_numbered_list([ "拓展至欧洲市场", "推出移动应用", "实施AI驱动的分析" ])
undefined

Tables

表格

python
undefined
python
undefined

From DataFrame

从DataFrame导入

import pandas as pd df = pd.DataFrame({ 'Region': ['North', 'South', 'East', 'West'], 'Revenue': [100000, 85000, 92000, 78000], 'Growth': ['12%', '8%', '15%', '5%'] }) report.add_table(df, title="Regional Performance")
import pandas as pd df = pd.DataFrame({ 'Region': ['North', 'South', 'East', 'West'], 'Revenue': [100000, 85000, 92000, 78000], 'Growth': ['12%', '8%', '15%', '5%'] }) report.add_table(df, title="区域业绩")

From dict/list

从字典/列表导入

data = [ {'Product': 'A', 'Sales': 1000, 'Profit': 200}, {'Product': 'B', 'Sales': 1500, 'Profit': 350} ] report.add_table(data, title="Product Summary")
data = [ {'Product': 'A', 'Sales': 1000, 'Profit': 200}, {'Product': 'B', 'Sales': 1500, 'Profit': 350} ] report.add_table(data, title="产品汇总")

With styling

带样式的表格

report.add_table(df, title="Sales Data", highlight_max=['Revenue'], # Highlight max values highlight_min=['Growth'], # Highlight min values currency_cols=['Revenue'], # Format as currency percent_cols=['Growth'], # Format as percent align={'Region': 'left', 'Revenue': 'right'} )
undefined
report.add_table(df, title="销售数据", highlight_max=['Revenue'], # 高亮最大值 highlight_min=['Growth'], # 高亮最小值 currency_cols=['Revenue'], # 格式化为货币 percent_cols=['Growth'], # 格式化为百分比 align={'Region': 'left', 'Revenue': 'right'} )
undefined

Charts

图表

python
undefined
python
undefined

Bar chart

柱状图

report.add_chart( data=df, chart_type="bar", x="Region", y="Revenue", title="Revenue by Region" )
report.add_chart( data=df, chart_type="bar", x="Region", y="Revenue", title="各地区收入" )

Line chart

折线图

report.add_chart( data=time_series_df, chart_type="line", x="Month", y=["Sales", "Forecast"], title="Sales Trend" )
report.add_chart( data=time_series_df, chart_type="line", x="Month", y=["Sales", "Forecast"], title="销售趋势" )

Pie chart

饼图

report.add_chart( data=category_df, chart_type="pie", values="Amount", labels="Category", title="Budget Allocation" )
report.add_chart( data=category_df, chart_type="pie", values="Amount", labels="Category", title="预算分配" )

Chart options

图表选项

report.add_chart( data=df, chart_type="bar", x="Region", y="Revenue", title="Revenue Analysis", color="#3498db", width=6, # inches height=4, show_values=True, show_legend=True )
undefined
report.add_chart( data=df, chart_type="bar", x="Region", y="Revenue", title="收入分析", color="#3498db", width=6, # 英寸 height=4, show_values=True, show_legend=True )
undefined

Images

图片

python
undefined
python
undefined

Add image

添加图片

report.add_image("screenshot.png", caption="Dashboard View") report.add_image("diagram.png", width=5, caption="Architecture Diagram")
undefined
report.add_image("screenshot.png", caption="仪表盘视图") report.add_image("diagram.png", width=5, caption="架构图")
undefined

Special Elements

特殊元素

python
undefined
python
undefined

Page break

分页符

report.add_page_break()
report.add_page_break()

Horizontal line

水平线

report.add_divider()
report.add_divider()

Spacer

空白间隔

report.add_spacer(height=0.5) # inches
report.add_spacer(height=0.5) # 英寸

Callout box

提示框

report.add_callout( "Key Insight: Customer retention improved 20% after implementing the new onboarding flow.", style="info" # info, warning, success, error )
report.add_callout( "关键洞察:实施新的用户引导流程后,客户留存率提升了20%。", style="info" # info, warning, success, error )

Quote

引用

report.add_quote( "Data is the new oil.", attribution="Clive Humby" )
undefined
report.add_quote( "数据是新的石油。", attribution="Clive Humby" )
undefined

Sections and Structure

章节与结构

python
undefined
python
undefined

Start a new section

开始新章节

report.start_section("Financial Analysis")
report.start_section("财务分析")

Add content to section

向章节添加内容

report.add_text("...") report.add_table(...)
report.add_text("...") report.add_table(...)

End section

结束章节

report.end_section()
report.end_section()

Table of contents (auto-generated)

目录(自动生成)

report.enable_toc()
report.enable_toc()

Appendix

附录

report.start_appendix() report.add_heading("Raw Data", level=2) report.add_table(raw_data)
undefined
report.start_appendix() report.add_heading("原始数据", level=2) report.add_table(raw_data)
undefined

Branding and Styling

品牌与样式定制

python
undefined
python
undefined

Logo and organization

Logo和组织信息

report.set_logo("logo.png", width=150) report.set_organization("Acme Corp")
report.set_logo("logo.png", width=150) report.set_organization("Acme公司")

Colors

配色

report.set_colors( primary="#1e40af", # Headers, accents secondary="#6b7280", # Secondary text background="#ffffff" # Background )
report.set_colors( primary="#1e40af", # 标题、强调色 secondary="#6b7280", # 次要文本 background="#ffffff" # 背景色 )

Fonts

字体

report.set_fonts( heading="Helvetica-Bold", body="Helvetica" )
report.set_fonts( heading="Helvetica-Bold", body="Helvetica" )

Header and footer

页眉和页脚

report.set_header("Confidential - Internal Use Only") report.set_footer("Page {page} of {total}")
report.set_header("机密 - 内部使用") report.set_footer("第 {page} 页,共 {total} 页")

Watermark

水印

report.set_watermark("DRAFT")
undefined
report.set_watermark("草稿")
undefined

Templates

模板

python
undefined
python
undefined

Available templates

可用模板

report = ReportGenerator.from_template("executive_summary") report = ReportGenerator.from_template("quarterly_review") report = ReportGenerator.from_template("project_status") report = ReportGenerator.from_template("analytics_dashboard")
report = ReportGenerator.from_template("执行摘要") report = ReportGenerator.from_template("季度回顾") report = ReportGenerator.from_template("项目状态") report = ReportGenerator.from_template("分析仪表盘")

Template with data

带数据的模板

report = ReportGenerator.from_template("monthly_metrics") report.set_data({ "period": "December 2024", "revenue": 1500000, "growth": 0.15, "customers": 5000, "charts": {"revenue_trend": trend_df} }) report.generate()
undefined
report = ReportGenerator.from_template("月度指标") report.set_data({ "period": "2024年12月", "revenue": 1500000, "growth": 0.15, "customers": 5000, "charts": {"revenue_trend": trend_df} }) report.generate()
undefined

Generation and Export

生成与导出

python
undefined
python
undefined

Generate report

生成报告

report.generate()
report.generate()

Save as PDF

保存为PDF

report.save("report.pdf")
report.save("report.pdf")

Save as HTML

保存为HTML

report.save("report.html")
report.save("report.html")

Get bytes

获取字节数据

pdf_bytes = report.to_bytes() html_string = report.to_html()
undefined
pdf_bytes = report.to_bytes() html_string = report.to_html()
undefined

Templates

模板详情

Executive Summary

执行摘要

  • Title page
  • Key metrics highlights
  • Summary bullets
  • Charts section
  • Recommendations
  • 标题页
  • 关键指标高亮
  • 摘要要点
  • 图表章节
  • 建议

Quarterly Review

季度回顾

  • Performance overview
  • Financial metrics
  • Comparison to previous quarter
  • Goals progress
  • Next quarter outlook
  • 业绩概述
  • 财务指标
  • 与上季度对比
  • 目标进度
  • 下季度展望

Project Status

项目状态

  • Project overview
  • Timeline/milestones
  • Risks and issues
  • Team updates
  • Next steps
  • 项目概述
  • 时间线/里程碑
  • 风险与问题
  • 团队更新
  • 下一步计划

Analytics Dashboard

分析仪表盘

  • KPI cards
  • Multiple charts
  • Trend analysis
  • Data tables
  • Insights
  • KPI卡片
  • 多图表展示
  • 趋势分析
  • 数据表格
  • 洞察总结

CLI Usage

命令行使用

bash
undefined
bash
undefined

Generate from JSON config

从JSON配置生成报告

python report_gen.py --config report_config.json --output report.pdf
python report_gen.py --config report_config.json --output report.pdf

With template

使用模板生成

python report_gen.py --template executive_summary --data data.json --output summary.pdf
python report_gen.py --template executive_summary --data data.json --output summary.pdf

Quick report from CSV

从CSV快速生成报告

python report_gen.py --csv data.csv --title "Data Report" --output report.pdf
undefined
python report_gen.py --csv data.csv --title "数据报告" --output report.pdf
undefined

CLI Arguments

命令行参数

ArgumentDescriptionDefault
--config
Report configuration JSON-
--template
Template name-
--data
Data JSON file-
--csv
CSV data file-
--title
Report title
Report
--output
Output file path
report.pdf
--format
Output format (pdf/html)
pdf
参数描述默认值
--config
报告配置JSON文件-
--template
模板名称-
--data
数据JSON文件-
--csv
CSV数据文件-
--title
报告标题
Report
--output
输出文件路径
report.pdf
--format
输出格式(pdf/html)
pdf

Examples

示例

Sales Report

销售报告

python
report = ReportGenerator("Q4 Sales Report")
report.set_subtitle("October - December 2024")
report.set_organization("Sales Department")
report.set_logo("company_logo.png")

report.add_heading("Executive Summary", level=1)
report.add_text(
    "Q4 2024 showed strong performance across all regions, "
    "with total revenue reaching $4.2M, a 23% increase over Q3."
)

report.add_callout(
    "Total Revenue: $4.2M (+23% QoQ)",
    style="success"
)

report.add_heading("Regional Performance", level=2)
report.add_chart(regional_data, "bar", x="Region", y="Revenue",
                 title="Revenue by Region")
report.add_table(regional_data, title="Detailed Metrics")

report.add_heading("Trends", level=2)
report.add_chart(monthly_data, "line", x="Month", y="Revenue",
                 title="Monthly Revenue Trend")

report.add_heading("Recommendations", level=1)
report.add_bullets([
    "Increase investment in high-growth East region",
    "Address declining West region performance",
    "Launch Q1 promotional campaign"
])

report.generate().save("q4_sales_report.pdf")
python
report = ReportGenerator("Q4销售报告")
report.set_subtitle("2024年10-12月")
report.set_organization("销售部门")
report.set_logo("company_logo.png")

report.add_heading("执行摘要", level=1)
report.add_text(
    "2024年第四季度各区域表现强劲,"
    "总收入达到420万美元,环比增长23%。"
)

report.add_callout(
    "总收入:420万美元(环比+23%)",
    style="success"
)

report.add_heading("区域业绩", level=2)
report.add_chart(regional_data, "bar", x="Region", y="Revenue",
                 title="各地区收入")
report.add_table(regional_data, title="详细指标")

report.add_heading("趋势分析", level=2)
report.add_chart(monthly_data, "line", x="Month", y="Revenue",
                 title="月度收入趋势")

report.add_heading("建议", level=1)
report.add_bullets([
    "加大对高增长东部区域的投入",
    "解决西部区域业绩下滑问题",
    "推出第一季度促销活动"
])

report.generate().save("q4_sales_report.pdf")

Analytics Dashboard

分析仪表盘

python
report = ReportGenerator("Marketing Analytics")
report.set_date_auto()
python
report = ReportGenerator("营销分析")
report.set_date_auto()

KPI Summary

KPI汇总

report.add_heading("Key Metrics", level=1) kpis = [ ["Visitors", "125,000", "+15%"], ["Conversions", "3,750", "+22%"], ["Revenue", "$187,500", "+18%"], ["CAC", "$45", "-8%"] ] report.add_table(kpis, headers=["Metric", "Value", "Change"])
report.add_heading("关键指标", level=1) kpis = [ ["访客数", "125,000", "+15%"], ["转化数", "3,750", "+22%"], ["收入", "$187,500", "+18%"], ["客户获取成本", "$45", "-8%"] ] report.add_table(kpis, headers=["指标", "数值", "变化"])

Traffic Sources

流量来源

report.add_heading("Traffic Sources", level=2) report.add_chart(traffic_df, "pie", values="Sessions", labels="Source", title="Traffic Distribution")
report.add_heading("流量来源", level=2) report.add_chart(traffic_df, "pie", values="Sessions", labels="Source", title="流量分布")

Conversion Funnel

转化漏斗

report.add_heading("Conversion Funnel", level=2) report.add_chart(funnel_df, "bar", x="Stage", y="Users", title="Funnel Analysis", horizontal=True)
report.add_heading("转化漏斗", level=2) report.add_chart(funnel_df, "bar", x="Stage", y="Users", title="漏斗分析", horizontal=True)

Trend Analysis

趋势分析

report.add_heading("Trends", level=2) report.add_chart(daily_df, "line", x="Date", y=["Visitors", "Conversions"], title="Daily Performance")
report.generate().save("marketing_dashboard.pdf")
undefined
report.add_heading("趋势分析", level=2) report.add_chart(daily_df, "line", x="Date", y=["Visitors", "Conversions"], title="每日业绩")
report.generate().save("marketing_dashboard.pdf")
undefined

Dependencies

依赖项

reportlab>=4.0.0
Pillow>=10.0.0
pandas>=2.0.0
matplotlib>=3.7.0
reportlab>=4.0.0
Pillow>=10.0.0
pandas>=2.0.0
matplotlib>=3.7.0

Limitations

局限性

  • Charts rendered as static images in PDF
  • Complex layouts may need manual adjustment
  • Large datasets may impact performance
  • HTML output has basic styling (no interactive charts)
  • PDF中的图表以静态图片形式呈现
  • 复杂布局可能需要手动调整
  • 大型数据集可能影响性能
  • HTML输出仅包含基础样式(无交互图表) ",