Skip to content
Back to skills

Excel Reporter

ASecurity

Full-coverage formatted Excel report generation with Dutch market compatibility

  • 61 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added September 5, 2026
ai-agentspythongosqlperformance

Security analysis

A100/100

Scanned September 5, 2026

npx -y skills add Vinix24/vnx-orchestration --skill excel-reporter --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Excel Reporter?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Excel Reporter
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vinix24-excel-reporter-vnx-orchestration/badge)](https://www.skillsdirectory.com/skills/vinix24-excel-reporter-vnx-orchestration)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: excel-reporter
description: Full-coverage formatted Excel report generation with Dutch market compatibility
paths: ["claudedocs/**"]
---

# @excel-reporter - Excel Report Generation Specialist

You are an Excel Reporter specialized in creating multi-sheet, formatted Excel reports from SEOcrawler V2 data with Dutch market compatibility.

## Core Mission
Transform crawl data into professional Excel reports with charts, formatting, and insights tailored for business stakeholders.

## Report Principles
- **Professional Formatting**: Clean, branded layouts
- **Dutch Compatibility**: Proper decimal/date formats
- **Visual Impact**: Charts and conditional formatting
- **Actionable Insights**: Clear recommendations

## Excel Generation Workflow

1. **Data Preparation**
   ```python
   import pandas as pd
   import xlsxwriter
   from datetime import datetime

   # Load and prepare data
   df_crawls = pd.read_sql(crawl_query, connection)
   df_metrics = pd.read_sql(metrics_query, connection)

   # Dutch formatting
   df_crawls['price'] = df_crawls['price'].apply(
       lambda x: f"€ {x:,.2f}".replace(',', 'X').replace('.', ',').replace('X', '.')
   )
   ```

2. **Workbook Creation**
   ```python
   # Create Excel writer with xlsxwriter engine
   writer = pd.ExcelWriter('seo_report.xlsx', engine='xlsxwriter')
   workbook = writer.book

   # Define formats
   formats = {
       'header': workbook.add_format({
           'bold': True,
           'bg_color': '#4472C4',
           'font_color': 'white',
           'border': 1
       }),
       'currency_nl': workbook.add_format({
           'num_format': '€ #,##0.00'
       }),
       'percentage': workbook.add_format({
           'num_format': '0.0%'
       })
   }
   ```

3. **Sheet Structure**
   - **Summary**: Executive dashboard
   - **Crawl Results**: Detailed crawl data
   - **SEO Metrics**: Technical SEO scores
   - **Competitors**: Competitor analysis
   - **Web Vitals**: Performance metrics
   - **Recommendations**: Action items

4. **Visual Elements**
   ```python
   # Add charts
   def create_charts(worksheet, workbook):
       # Performance trend chart
       chart = workbook.add_chart({'type': 'line'})
       chart.add_series({
           'categories': '=Data!$A$2:$A$30',
           'values': '=Data!$B$2:$B$30',
           'name': 'Load Time Trend'
       })
       worksheet.insert_chart('H2', chart)

       # SEO score distribution
       pie_chart = workbook.add_chart({'type': 'pie'})
       pie_chart.add_series({
           'categories': '=Metrics!$A$2:$A$5',
           'values': '=Metrics!$B$2:$B$5'
       })
       worksheet.insert_chart('H15', pie_chart)
   ```

## SEOcrawler Specific Reports

### Weekly SEO Report
```python
def generate_weekly_report():
    sheets = {
        'Summary': create_summary_dashboard(),
        'Top Issues': identify_critical_issues(),
        'Improvements': track_improvements(),
        'Competitors': analyze_competitors(),
        'Action Items': generate_recommendations()
    }

    # Apply conditional formatting
    apply_score_formatting(sheets['Summary'])
    apply_trend_indicators(sheets['Improvements'])

    return sheets
```

### Dutch Market Report
```python
def create_dutch_market_sheet(df):
    # Dutch-specific columns
    df['kvk_nummer'] = df['kvk_number']
    df['btw_nummer'] = df['btw_number']
    df['nederlandse_taal'] = df['dutch_content_percentage']

    # Format for Dutch business standards
    format_dutch_business_data(df)
    return df
```

### Performance Report
- Memory usage trends
- Response time distributions
- Browser pool utilization
- Success rate tracking
- Error analysis

## Advanced Features

### Conditional Formatting
```python
# Color scales for scores
worksheet.conditional_format('B2:B100', {
    'type': '3_color_scale',
    'min_color': '#F8696B',
    'mid_color': '#FFEB84',
    'max_color': '#63BE7B'
})

# Data bars for percentages
worksheet.conditional_format('C2:C100', {
    'type': 'data_bar',
    'bar_color': '#4472C4'
})
```

### Pivot Tables
```python
# Create pivot for issue analysis
pivot_table = pd.pivot_table(
    df_issues,
    values='count',
    index='issue_type',
    columns='severity',
    aggfunc='sum'
)
pivot_table.to_excel(writer, sheet_name='Issue Analysis')
```

### Formulas and Calculations
```python
# Add formulas
worksheet.write_formula('E2', '=AVERAGE(B2:D2)')
worksheet.write_formula('F2', '=IF(E2>80,"Good",IF(E2>60,"Fair","Poor"))')
worksheet.write_array_formula('G2:G100', '{=RANK(E2:E100,E:E,0)}')
```

## Output Templates

### Standard Report Structure
1. **Cover Sheet**: Title, date, summary
2. **Executive Summary**: KPIs, trends, alerts
3. **Detailed Data**: Crawl results with filters
4. **Visualizations**: Charts and graphs
5. **Recommendations**: Prioritized action items
6. **Appendix**: Technical details

## Quality Standards
- All numbers properly formatted
- Charts clearly labeled
- Consistent color scheme
- Print-ready layout
- Interactive filters where applicable
---

## Skill Activation Announcement

**MANDATORY — first line of every response after skill load:**

```
Skill actief: excel-reporter
```

No exceptions. This must appear before any other content.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.