---
id: sm3-report-generator
name: "report-generator"
url: https://skills.yangsir.net/skill/sm3-report-generator
author: claude-office-skills
domain: data-analysis
tags: ["report-generation", "data-analysis", "automated-reporting", "business-intelligence"]
install_count: 2000
rating: 4.30 (20 reviews)
github: https://github.com/claude-office-skills/skills
---

# report-generator

> 自动生成专业报告，包括数据分析、图表和文本描述，提高报告制作效率和质量。

**Stats**: 2,000 installs · 4.3/5 (20 reviews)

## Before / After 对比

### 报告生成

## Readme

# report-generator

# Report Generator Skill

## Overview

This skill enables automatic generation of professional data reports. Create dashboards, KPI summaries, and analytical reports with charts, tables, and insights from your data.

## How to Use

- Provide data (CSV, Excel, JSON, or describe it)

- Specify the type of report needed

- I'll generate a formatted report with visualizations

**Example prompts:**

- "Generate a sales report from this data"

- "Create a monthly KPI dashboard"

- "Build an executive summary with charts"

- "Produce a data analysis report"

## Domain Knowledge

### Report Components

```
# Report structure
report = {
    'title': 'Monthly Sales Report',
    'period': 'January 2024',
    'sections': [
        'executive_summary',
        'kpi_dashboard',
        'detailed_analysis',
        'charts',
        'recommendations'
    ]
}

```

### Using Python for Reports

```
import pandas as pd
import matplotlib.pyplot as plt
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas

def generate_report(data, output_path):
    # Load data
    df = pd.read_csv(data)
    
    # Calculate KPIs
    total_revenue = df['revenue'].sum()
    avg_order = df['revenue'].mean()
    growth = df['revenue'].pct_change().mean()
    
    # Create charts
    fig, axes = plt.subplots(2, 2, figsize=(12, 10))
    df.plot(kind='bar', ax=axes[0,0], title='Revenue by Month')
    df.plot(kind='line', ax=axes[0,1], title='Trend')
    plt.savefig('charts.png')
    
    # Generate PDF
    # ... PDF generation code
    
    return output_path

```

### HTML Report Template

```
def generate_html_report(data, title):
    html = f'''
    <!DOCTYPE html>
    <html>
    <head>
        <title>{title}</title>
        <style>
            body {{ font-family: Arial; margin: 40px; }}
            .kpi {{ display: flex; gap: 20px; }}
            .kpi-card {{ background: #f5f5f5; padding: 20px; border-radius: 8px; }}
            .metric {{ font-size: 2em; font-weight: bold; color: #2563eb; }}
            table {{ border-collapse: collapse; width: 100%; }}
            th, td {{ border: 1px solid #ddd; padding: 12px; text-align: left; }}
        </style>
    </head>
    <body>
        <h1>{title}</h1>
        <div class="kpi">
            <div class="kpi-card">
                <div class="metric">${data['revenue']:,.0f}</div>
                <div>Total Revenue</div>
            </div>
            <div class="kpi-card">
                <div class="metric">{data['growth']:.1%}</div>
                <div>Growth Rate</div>
            </div>
        </div>
        <!-- More content -->
    </body>
    </html>
    '''
    return html

```

## Example: Sales Report

```
import pandas as pd
import matplotlib.pyplot as plt

def create_sales_report(csv_path, output_path):
    # Read data
    df = pd.read_csv(csv_path)
    
    # Calculate metrics
    metrics = {
        'total_revenue': df['amount'].sum(),
        'total_orders': len(df),
        'avg_order': df['amount'].mean(),
        'top_product': df.groupby('product')['amount'].sum().idxmax()
    }
    
    # Create visualizations
    fig, axes = plt.subplots(2, 2, figsize=(14, 10))
    
    # Revenue by product
    df.groupby('product')['amount'].sum().plot(
        kind='bar', ax=axes[0,0], title='Revenue by Product'
    )
    
    # Monthly trend
    df.groupby('month')['amount'].sum().plot(
        kind='line', ax=axes[0,1], title='Monthly Revenue'
    )
    
    plt.tight_layout()
    plt.savefig(output_path.replace('.html', '_charts.png'))
    
    # Generate HTML report
    html = generate_html_report(metrics, 'Sales Report')
    
    with open(output_path, 'w') as f:
        f.write(html)
    
    return output_path

create_sales_report('sales_data.csv', 'sales_report.html')

```

## Resources

- [Matplotlib](https://matplotlib.org/)

- [Plotly](https://plotly.com/)

- [ReportLab](https://www.reportlab.com/)

Weekly Installs201Repository[claude-office-s…s/skills](https://github.com/claude-office-skills/skills)GitHub Stars13First Seen9 days agoSecurity Audits[Gen Agent Trust HubPass](/claude-office-skills/skills/report-generator/security/agent-trust-hub)[SocketPass](/claude-office-skills/skills/report-generator/security/socket)[SnykPass](/claude-office-skills/skills/report-generator/security/snyk)Installed onclaude-code145opencode97github-copilot96gemini-cli94amp94cline94

---
*Source: https://skills.yangsir.net/skill/sm3-report-generator*
*Markdown mirror: https://skills.yangsir.net/api/skill/sm3-report-generator/markdown*