Agent skill

excel-report-generator

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.

Stars 192
Forks 34

Install this agent skill to your Project

npx add-skill https://github.com/wwwzhouhui/skills_collection/tree/main/excel-report-generator

SKILL.md

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_formatting.add(
    'C2:C100',
    CellIsRule(operator='lessThan', formula=['0'], fill=red_fill)
)

数据验证

python
from openpyxl.worksheet.datavalidation import DataValidation

# 下拉列表
dv = DataValidation(type="list", formula1='"优秀,良好,一般,较差"', allow_blank=True)
worksheet.add_data_validation(dv)
dv.add('D2:D100')

公式应用

python
# 添加求和公式
worksheet['B11'] = '=SUM(B2:B10)'

# 添加平均值公式
worksheet['C11'] = '=AVERAGE(C2:C10)'

最佳实践

1. 性能优化

  • 对于大数据集(>10万行),使用 openpyxlwrite_only 模式
  • 分批处理数据,避免内存溢出
  • 使用 xlsxwriter 引擎处理复杂图表和格式

2. 错误处理

python
try:
    df = pd.read_csv('data.csv')
except FileNotFoundError:
    print("数据文件不存在")
except pd.errors.EmptyDataError:
    print("数据文件为空")

3. 文件命名规范

python
from datetime import datetime

# 使用时间戳避免文件覆盖
timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')
filename = f'sales_report_{timestamp}.xlsx'

4. 数据验证

python
# 检查必需列
required_columns = ['date', 'product', 'sales']
if not all(col in df.columns for col in required_columns):
    raise ValueError(f"缺少必需列: {required_columns}")

# 数据类型验证
df['date'] = pd.to_datetime(df['date'])
df['sales'] = pd.to_numeric(df['sales'], errors='coerce')

5. 模板管理

  • 将常用模板存放在 ~/.claude/skills/excel-report-generator/templates/ 目录
  • 使用相对路径引用: templates/monthly_report.xlsx
  • 保持模板简洁,只包含结构和样式,不包含数据

快速参考

常用代码片段

查看 examples/quick_reference.py 获取常用代码片段,包括:

  • 基本 Excel 创建
  • 多工作表管理
  • 样式和格式化
  • 图表创建
  • 条件格式
  • 公式应用

示例文件

  • examples/basic_report.py - 基础报表生成示例
  • examples/advanced_report.py - 高级功能示例
  • examples/template_fill.py - 模板填充示例
  • templates/business_report.xlsx - 业务报告模板
  • templates/data_analysis.xlsx - 数据分析模板

依赖安装

确保已安装必需的 Python 包:

bash
pip install pandas openpyxl xlsxwriter

可选依赖:

bash
pip install matplotlib seaborn  # 用于数据可视化
pip install sqlalchemy pymysql  # 用于数据库连接

故障排查

常见问题

Q: 生成的 Excel 文件无法打开 A: 确保使用 .xlsx 扩展名,检查文件权限,验证数据中没有非法字符

Q: 图表不显示 A: 检查数据引用范围是否正确,确保数据类型为数值型

Q: 中文乱码 A: 使用 encoding='utf-8-sig' 读取 CSV,或在 Excel 中使用 UTF-8 编码

Q: 大文件生成很慢 A: 使用 write_only=True 模式,减少格式化操作,分批写入数据

相关资源

版本历史

  • v1.0.0 (2025-01-12) - 初始版本,支持基础报表生成和模板填充

Expand your agent's capabilities with these related and highly-rated skills.

wwwzhouhui/skills_collection

obsidian-search

根据用户的自然语言检索需求,生成合适的 Obsidian CLI 查询命令,执行查询,并将结果总结返回。用于用户想在 Obsidian 仓库中搜索笔记、查找上下文、筛选任务、标签、属性、反链、文件列表或结构化查询时,例如“帮我找最近的会议记录”“搜一下包含某关键词的笔记”“看看某篇笔记有哪些反向链接”。

192 34
Explore
wwwzhouhui/skills_collection

xiaohuihui-dify-tech-article

专为Dify工作流案例分享设计的公众号文章生成器,遵循小灰灰公众号写作规范,自动生成包含前言、工作流制作、总结的完整Dify案例文章,配有详细的节点配置、插件安装步骤、代码示例,并支持自动生成图片上传到腾讯云COS图床

192 34
Explore
wwwzhouhui/skills_collection

dify-dsl-generator

专业的 Dify 工作流 DSL/YML 文件生成器,根据用户业务需求自动生成完整的 Dify 工作流配置文件,支持各种节点类型和复杂工作流逻辑

192 34
Explore
wwwzhouhui/skills_collection

wechat-article-fetcher

获取并解析微信公众号文章。从微信文章链接中提取标题、作者、公众号名称、正文内容、图片和元数据。当用户提供微信文章链接(mp.weixin.qq.com/s/...)并希望阅读、提取、下载或转换文章内容时使用。适用场景包括获取/下载微信文章、提取微信文章文字或元数据、将微信文章转换为Markdown、将微信文章连同图片保存到本地。关键词:微信公众号、文章获取、文章抓取、文章下载。

192 34
Explore
wwwzhouhui/skills_collection

wechat-compliance-reviewer

审查微信公众号文章内容并识别违规风险点。使用场景:当用户写完公众号文章后请求审查、检查是否违规、发布前合规检查、识别诱导分享/欺诈信息/营销推广/版权侵权等违规内容时触发此技能。

192 34
Explore
wwwzhouhui/skills_collection

公众号封面生成器

根据主题和标题生成现代风格的公众号封面图,使用jimeng-mcp-server生成3D插画风格底图,叠加文字层生成HTML,并可选择性转换为高质量PNG/JPG图片

192 34
Explore

Didn't find tool you were looking for?

Be as detailed as possible for better results