Initial commit
This commit is contained in:
105
skills/xlsx/scenes/create.md
Executable file
105
skills/xlsx/scenes/create.md
Executable file
@@ -0,0 +1,105 @@
|
||||
# Scene: Create New Spreadsheet
|
||||
|
||||
## When This Applies
|
||||
User wants to create a new Excel file from scratch — a table, template, schedule, report, or any structured data output.
|
||||
|
||||
For financial models, also load `scenes/finance.md`.
|
||||
|
||||
## Workflow
|
||||
|
||||
```
|
||||
1. PLAN → Identify all sheets, their structure, formulas, cross-references
|
||||
2. STYLE → Load engines/design.md, apply default palette
|
||||
3. BUILD → Create workbook, write data/formulas/formatting per sheet
|
||||
4. QA → recalc → audit → scan → chart-verify (if charts)
|
||||
5. PIVOT → If needed, run pivot command LAST
|
||||
6. VALIDATE → validate → exit 0 = deliver
|
||||
```
|
||||
|
||||
## Layout & Styling
|
||||
|
||||
All layout rules (Canvas Origin B2, column widths, row heights, margins) and styling (title/header/data/totals) are defined in **`engines/design.md`** — the single source of truth. Do not duplicate here.
|
||||
|
||||
Quick reference for sheet structure:
|
||||
```
|
||||
Row 1: [top margin]
|
||||
Row 2: Title (B2)
|
||||
Row 3: [spacer]
|
||||
Row 4: Column headers
|
||||
Row 5+: Data rows
|
||||
Last+1: Totals row
|
||||
Last+3: Notes/sources
|
||||
```
|
||||
|
||||
## Multi-Sheet Workbooks
|
||||
|
||||
### Cross-Sheet References
|
||||
```python
|
||||
# Reference another sheet
|
||||
sheet['C5'] = "=Data!B10"
|
||||
|
||||
# Sheet names with spaces need quotes
|
||||
sheet['C5'] = "='Sales Data'!B10"
|
||||
|
||||
# Green font for cross-sheet links (Finance theme)
|
||||
sheet['C5'].font = Font(color="008000")
|
||||
```
|
||||
|
||||
### Common Multi-Sheet Patterns
|
||||
- **Data + Summary**: Raw data on Sheet1, formulas/charts on Summary
|
||||
- **Monthly tabs**: Jan, Feb, Mar... + Annual Summary
|
||||
- **Input + Output**: Assumptions sheet + Calculations sheet + Dashboard
|
||||
|
||||
## Template Patterns
|
||||
|
||||
### Simple Data Table
|
||||
```python
|
||||
wb = Workbook()
|
||||
ws = wb.active
|
||||
ws.title = "Data"
|
||||
|
||||
# Title + Headers + Data + Totals styling → see engines/design.md §11 Code Templates
|
||||
# Only show formula logic here:
|
||||
|
||||
# Headers at B4
|
||||
headers = ['Product', 'Q1', 'Q2', 'Q3', 'Q4', 'Total']
|
||||
for col, h in enumerate(headers, 2):
|
||||
cell = ws.cell(row=4, column=col, value=h)
|
||||
|
||||
# Data rows starting at row 5
|
||||
# ...
|
||||
|
||||
# Totals row
|
||||
total_row = last_data_row + 1
|
||||
ws.cell(row=total_row, column=2, value='Total')
|
||||
for col in range(3, 7): # Q1-Q4
|
||||
letter = get_column_letter(col)
|
||||
ws.cell(row=total_row, column=col).value = f'=SUM({letter}5:{letter}{last_data_row})'
|
||||
|
||||
# Grand total
|
||||
ws.cell(row=total_row, column=7).value = f'=SUM(C{total_row}:F{total_row})'
|
||||
```
|
||||
|
||||
### Schedule / Calendar
|
||||
- Use merged cells for day headers
|
||||
- Conditional formatting for weekends (light gray fill)
|
||||
- Freeze panes: `ws.freeze_panes = 'C5'` (freeze header + left labels)
|
||||
|
||||
### Checklist / Tracker
|
||||
- Checkbox column using data validation (`TRUE`/`FALSE`)
|
||||
- Status column with conditional formatting (green/amber/red)
|
||||
- Progress bar using data bar conditional formatting
|
||||
|
||||
## Freeze Panes & Print
|
||||
|
||||
```python
|
||||
# Freeze headers (row 4) and label column (col B)
|
||||
ws.freeze_panes = 'C5' # Rows 1-4 and cols A-B stay visible
|
||||
|
||||
# Print setup
|
||||
ws.page_setup.orientation = 'landscape'
|
||||
ws.page_setup.fitToWidth = 1
|
||||
ws.page_setup.fitToHeight = 0
|
||||
ws.print_area = 'B2:H50'
|
||||
ws.print_title_rows = '4:4' # Repeat header on each page
|
||||
```
|
||||
Reference in New Issue
Block a user