- name
- excel-builder
- description
- Build .xlsx files with formulas, merged cells, data validation, conditional formatting, pivot tables, and charts. Use when creating Excel spreadsheets, financial tables, data entry forms, or any structured .xlsx deliverable requiring formulas or formatting.
- license
- MIT
- metadata
- version
- 1.0.0
- domain
- document-generation
- triggers
- Excel, xlsx, spreadsheet, formula, pivot table, chart, data validation, conditional formatting, openpyxl, xlsxwriter, merged cells, workbook
- role
- builder
- scope
- implementation
- output-format
- xlsx
- related-skills
- financial-model-builder, data-analysis-report, pdf-report-generator
Excel Builder
Builds structured .xlsx files programmatically using Python libraries (openpyxl or xlsxwriter).
When to Use This Skill
- Creating Excel spreadsheets with formulas and calculated fields
- Building financial tables, budgets, or invoices
- Generating data entry forms with validation and dropdowns
- Producing reports with charts (bar, line, pie, scatter)
- Exporting structured data with conditional formatting or color coding
- Building pivot-ready data tables
Core Workflow
- Choose library — Use
openpyxlfor reading/modifying existing files; usexlsxwriterfor new write-only files with rich charts - Design structure — Define sheets, columns, headers, and data rows before writing
- Write data — Populate cells row by row; apply number formats (
"#,##0.00","YYYY-MM-DD") - Add formulas — Use Excel formula strings:
=SUM(B2:B100),=IF(A2>0, "Yes", "No") - Format — Apply styles: bold headers, column widths, merged cells, fill colors, borders
- Validate — Add data validation (dropdown lists, numeric ranges) where applicable
- Charts — Add charts referencing data ranges; set titles and axis labels
- Save and verify — Save to output path; confirm file exists and is non-zero bytes
Key Patterns
openpyxl (read/write existing)
from openpyxl import Workbook, load_workbook
from openpyxl.styles import Font, PatternFill, Alignment
wb = Workbook()
ws = wb.active
ws.title = "Report"
ws["A1"] = "Revenue"
ws["A1"].font = Font(bold=True, size=12)
ws.column_dimensions["A"].width = 20
wb.save("output.xlsx")xlsxwriter (new files with charts)
import xlsxwriter
wb = xlsxwriter.Workbook("output.xlsx")
ws = wb.add_worksheet("Summary")
bold = wb.add_format({"bold": True, "bg_color": "#4472C4", "font_color": "white"})
ws.write("A1", "Month", bold)
chart = wb.add_chart({"type": "column"})
chart.add_series({"values": "=Summary!$B$2:$B$13", "name": "Revenue"})
ws.insert_chart("D2", chart)
wb.close()Error Handling
- If
openpyxlnot installed:pip install openpyxl - If
xlsxwriternot installed:pip install xlsxwriter - Always wrap
wb.save()in try/except; report path conflicts - Verify output with
os.path.getsize(path) > 0before returning
Output
Return the absolute path to the saved .xlsx file. If generating multiple sheets, list each sheet name and row count in a brief summary.