Skill 詳細

excel-report-generator

Directly generates formatted Excel reports, analysis, charts, and exports.

一致度直接一致excelスプレッドシート 向けにレビュー済み
出典wwwzhouhui/skills_collection外部ソース
報告インストール数365人気度の参考値

使用前に確認

自動レビューは関連性のみを確認し、安全性や推奨を保証しません。使用前に出典の説明を読んでください。

保存された出典プレビュー

SKILL.md

これはレビュー時に保存された抜粋です。完全で最新の内容は外部ソースを確認してください。

---
name: excel-report-generator
description: Automatically generate Excel reports from data sources including CSV, databases, or Python data structures. Supports data analysis reports, business reports, data export, and template-based report generation using pandas and openpyxl. Activate when users mention Excel, spreadsheet, report generation, data export, or business reporting.
---

# Excel Report Generator

自动化 Excel 报表生成工具,支持从多种数据源生成专业的 Excel 报告。

## 功能概述

这个 Skill 可以帮助你:
- 📊 从 CSV、数据库或 Python 数据结构生成 Excel 报表
- 📈 创建包含图表、格式化和公式的数据分析报告
- 📋 基于模板填充数据生成业务报告
- 💾 将系统数据批量导出为格式化的 Excel 文件
- 🎨 应用专业的样式、颜色和条件格式

## 核心技术栈

- **pandas**: 数据处理和分析
- **openpyxl**: Excel 文件读写和格式化
- **xlsxwriter**: 高级图表和格式支持(可选)

## 使用场景

### 1. 数据分析报表
从原始数据生成包含统计分析、透视表和可视化图表的综合报告。

**示例请求**:
- "帮我从这个 CSV 生成销售分析报表"
- "创建一个包含月度趋势图的数据分析 Excel"
- "生成带有统计汇总的财务报表"

### 2. 业务报告
定期生成标准化的业务报告,如销售报告、KPI 仪表板等。

**示例请求**:
- "生成本月的销售业绩报告"
- "创建 KPI 跟踪报表"
- "导出季度业务总结 Excel"

### 3. 数据导出
将数据库查询结果或系统数据导出为格式化的 Excel 文件。

**示例请求**:
- "把用户数据导出到 Excel"
- "将数据库查询结果保存为 Excel 文件"
- "导出多个工作表的数据集"

### 4. 模板填充
基于预定义的 Excel 模板填充动态数据。

**示例请求**:
- "使用这个模板生成报告"
- "填充 Excel 模板中的数据"
- "批量生成基于模板的发票"

## 使用方法

### 基本工作流程

1. **准备数据源**: CSV 文件、pandas DataFrame、数据库连接或 Python 字典
2. **定义报表需求**: 描述所需的格式、图表、样式
3. **生成报表**: 自动创建格式化的 Excel 文件
4. **验证输出**: 检查生成的文件是否符合要求

### 命令示例

**从 CSV 生成报表**:
```
请从 sales_data.csv 生成一个销售分析报表,包含:
- 按产品分类的销售汇总
- 月度销售趋势图
- Top 10 产品排名
```

**从 DataFrame 生成报表**:
```
我有一个 pandas DataFrame,帮我生成 Excel 报表,包括:
- 数据透视表
- 条件格式高亮异常值
- 自动筛选和冻结首行
```

**使用模板**:
```
基于 templates/monthly_report.xlsx 模板,填充当月数据并生成报告
```

## 实现指南

当用户请求生成 Excel 报表时,遵循以下步骤:

### Step 1: 数据准备
```python
import pandas as pd
from openpyxl import load_workbook
from openpyxl.styles import Font, PatternFill, Alignment
from openpyxl.utils.dataframe import dataframe_to_rows

# 读取数据
df = pd.read_csv('data.csv')
# 或从数据库
# df = pd.read_sql(query, connection)
```

### Step 2: 数据处理
```python
# 数据清洗和转换
df_clean = df.dropna()

# 统计分析
summary = df.groupby('category').agg({
    'sales': ['sum', 'mean', 'count'],
    'profit': 'sum'
})
```

### Step 3: 创建 Excel 文件
```python
# 使用 pandas ExcelWriter
with pd.ExcelWriter('output.xlsx', engine='openpyxl') as writer:
    # 写入原始数据
    df_clean.to_excel(writer, sheet_name='Raw Data', index=False)

    # 写入汇总数据
    summary.to_excel(writer, sheet_name='Summary')

    # 获取 workbook 进行格式化
    workbook = writer.book
    worksheet = writer.sheets['Summary']
```

### Step 4: 格式化和样式
```python
# 标题样式
header_font = Font(bold=True, color='FFFFFF')
header_fill = PatternFill(start_color='4472C4', end_color='4472C4', fill_type='solid')

# 应用样式到标题行
for cell in worksheet[1]:
    cell.font = header_font
    cell.fill = header_fill
    cell.alignment = Alignment(horizontal='center')

# 列宽自动调整
for column in worksheet.columns:
    max_length = 0
    column_letter = column[0].column_letter
    for cell in column:
        if len(str(cell.value)) > max_length:
            max_length = len(str(cell.value))
    worksheet.column_dimensions[column_letter].width = max_length + 2
```

### Step 5: 添加图表(可选)
```python
from openpyxl.chart import BarChart, Reference

# 创建图表
chart = BarChart()
chart.title = "Sales by Category"
chart.x_axis.title = "Category"
chart.y_axis.title = "Sales"

# 数据引用
data = Reference(worksheet, min_col=2, min_row=1, max_row=10)
categories = Reference(worksheet, min_col=1, min_row=2, max_row=10)

chart.add_data(data, titles_from_data=True)
chart.set_categories(categories)

# 添加到工作表
worksheet.add_chart(chart, "E5")
```

## 高级功能

### 条件格式
```python
from openpyxl.formatting.rule import ColorScaleRule, CellIsRule

# 色阶格式
worksheet.conditional_formatting.add(
    'B2:B100',
    ColorScaleRule(start_type='min', start_color='FF6347',
                   mid_type='percentile', mid_value=50, mid_color='FFFF00',
                   end_type='max', end_color='90EE90')
)

# 基于规则的格式
red_fill = PatternFill(start_color='FFC7CE', end_color='FFC7CE', fill_type='solid')
worksheet.conditional_fo
GitHub で全文を読む (外部ページ)
関連情報

関連する仕事