Generate XLSX, CSV, and Markdown spreadsheets from structured JSON
Define columns, rows, and cell data as JSON — get back an XLSX workbook with full formatting, a CSV file for data pipelines, or a Markdown table for docs. Pipe document extraction output directly into formatted spreadsheets.
No credit card required — start with free trial credits
One output feeds the next
Sheet Generation is part of a complete content pipeline. One key, one credit pool, and structured JSON responses designed to chain together.
Mix and match freely
Extract data from a document, generate visuals from the results, then compile everything into a finished report. Mix, match, and build your own pipeline.
Three steps to your first spreadsheet
Define your columns
Specify column names and optional widths. Columns define the header row and set the structure for your spreadsheet.
- Column names as display headers
- Optional column widths for XLSX
- Multiple sheets for XLSX and Markdown
Add row data
Provide rows as positional arrays of cells. Each cell has a value, optional format (currency, percentage, date, etc.), optional style overrides, and optional row/column spans.
- 9 cell formats: text, number, decimal, currency, percentage, date, datetime, time, custom
- Per-cell style overrides for font, color, alignment
- Row and column spans for merged cells, plus Excel formulas
Get your spreadsheet
Receive the generated spreadsheet as base64-encoded JSON. CSV for data pipelines, Markdown for documentation, XLSX for Excel with full formatting.
- CSV: single sheet, RFC 4180 compliant
- Markdown: multiple sheets as headed tables
- XLSX: native formulas, merged cells, formatting, custom fonts
Templates As Code
Define columns, rows, and styles as JSON. The same input produces identical spreadsheets every time — deterministic output you can rely on.
Three Output Formats
Generate CSV for data interchange, Markdown tables for docs and LLMs, or XLSX for Excel with full formatting — all from the same input.
Rich Formatting
Cell-level styles with fonts, colors, alignment, and number formats. Base styles plus per-cell overrides. Custom fonts via base64 upload.
Formulas & Merged Cells
Native Excel formulas in XLSX, server-evaluated formulas for CSV and Markdown. Merge cells for headers and grouped data.
Real-world pipelines, ready to ship
Each recipe chains multiple APIs into a complete workflow. Pick one, tweak it, and deploy — or use it as a starting point for your own pipeline.
Generate Billing Statement
Generate an XLSX billing statement with a merged company header, subscription line items, overages, credits, and subtotal/tax/total formulas.
Generate Employee Report
Generate an XLSX employee report with departments, salaries, hire dates, and currency formatting.
Generate Inventory Report
Generate an XLSX inventory report with stock levels, reorder points, unit costs, and total value formulas for purchasing teams.
Generate Invoice Spreadsheet
Generate an XLSX invoice with company info, line items, subtotal/tax/total formulas, and currency formatting.
Generate a Multi-Client Usage Report
Generate a multi-sheet XLSX report tracking API usage, credit consumption, and billing across multiple agency clients.
Generate Order Export
Export e-commerce order data to CSV with order numbers, customer details, amounts, and fulfillment status.
Generate Sales Dashboard
Generate a multi-sheet XLSX workbook with quarterly revenue, expenses, and summary formulas.
Generate Sales Report Spreadsheet
Generate a formatted XLSX spreadsheet with sales data, currency formatting, and bold headers.
Generate Timesheet Export
Generate an XLSX timesheet with logged hours, hourly rates, per-entry amount formulas, and totals for client billing or payroll.
One n8n node for your entire pipeline
Most n8n document workflows chain three or four separate services. The Iteration Layer community node covers extraction, transformation, and generation in a single install — wire up multi-step pipelines visually instead of writing glue code.
Start building right now
One API call, one credit deducted. Chains naturally with our other APIs — pipe the output of one into the next without glue code. You'll be up and running in minutes.
- Full OpenAPI 3.1 specification available for code generation and IDE integration.
- MCP server support for seamless integration with AI agents and tools.
- Comprehensive documentation with examples for every field type and edge case.
{
"format": "xlsx",
"styles": {
"header": {
"is_bold": true,
"background_color": "#4472C4",
"font_color": "#FFFFFF"
}
},
"sheets": [
{
"name": "FY2026 Pipeline",
"columns": [
{ "name": "Region", "width": 18 },
{ "name": "Account Executive", "width": 24 },
{ "name": "Plan", "width": 18 },
{ "name": "Stage", "width": 16 },
{ "name": "ARR", "width": 16 },
{ "name": "Renewal", "width": 16 }
],
"rows": [
[{ "value": "Germany" }, { "value": "Mia Fischer" }, { "value": "Enterprise" }, { "value": "Contract" }, { "value": 182000, "format": "currency", "currency_code": "EUR" }, { "value": "2026-11-30", "format": "date" }],
[{ "value": "France" }, { "value": "Lucas Moreau" }, { "value": "Growth" }, { "value": "Security Review" }, { "value": 96000, "format": "currency", "currency_code": "EUR" }, { "value": "2026-09-15", "format": "date" }],
[{ "value": "Spain" }, { "value": "Sofia Ramos" }, { "value": "Growth" }, { "value": "Negotiation" }, { "value": 74000, "format": "currency", "currency_code": "EUR" }, { "value": "2026-10-04", "format": "date" }],
[{ "value": "United States" }, { "value": "Ava Thompson" }, { "value": "Enterprise" }, { "value": "Pilot" }, { "value": 265000, "format": "currency", "currency_code": "USD" }, { "value": "2026-12-20", "format": "date" }],
[{ "value": "Canada" }, { "value": "Noah Bennett" }, { "value": "Startup" }, { "value": "Proposal" }, { "value": 42000, "format": "currency", "currency_code": "USD" }, { "value": "2026-08-05", "format": "date" }],
[{ "value": "Mexico" }, { "value": "Camila Ortiz" }, { "value": "Growth" }, { "value": "Qualified" }, { "value": 58000, "format": "currency", "currency_code": "USD" }, { "value": "2026-09-21", "format": "date" }],
[{ "value": "Singapore" }, { "value": "Ethan Tan" }, { "value": "Enterprise" }, { "value": "Procurement" }, { "value": 118000, "format": "currency", "currency_code": "USD" }, { "value": "2026-10-12", "format": "date" }],
[{ "value": "Australia" }, { "value": "Chloe Walsh" }, { "value": "Growth" }, { "value": "Discovery" }, { "value": 64000, "format": "currency", "currency_code": "USD" }, { "value": "2026-07-28", "format": "date" }],
[{ "value": "Japan" }, { "value": "Haruto Sato" }, { "value": "Enterprise" }, { "value": "Legal" }, { "value": 143000, "format": "currency", "currency_code": "USD" }, { "value": "2026-11-08", "format": "date" }],
[{ "value": "South Korea" }, { "value": "Min Seo Park" }, { "value": "Growth" }, { "value": "Demo" }, { "value": 51000, "format": "currency", "currency_code": "USD" }, { "value": "2026-08-19", "format": "date" }]
]
}
]
}
| Region | Account Executive | Plan | Stage | ARR | Renewal |
|---|---|---|---|---|---|
| Germany | Mia Fischer | Enterprise | Contract | EUR 182,000 | 2026-11-30 |
| France | Lucas Moreau | Growth | Security Review | EUR 96,000 | 2026-09-15 |
| Spain | Sofia Ramos | Growth | Negotiation | EUR 74,000 | 2026-10-04 |
| United States | Ava Thompson | Enterprise | Pilot | USD 265,000 | 2026-12-20 |
| Canada | Noah Bennett | Startup | Proposal | USD 42,000 | 2026-08-05 |
| Mexico | Camila Ortiz | Growth | Qualified | USD 58,000 | 2026-09-21 |
| Singapore | Ethan Tan | Enterprise | Procurement | USD 118,000 | 2026-10-12 |
| Australia | Chloe Walsh | Growth | Discovery | USD 64,000 | 2026-07-28 |
| Japan | Haruto Sato | Enterprise | Legal | USD 143,000 | 2026-11-08 |
| South Korea | Min Seo Park | Growth | Demo | USD 51,000 | 2026-08-19 |
curl -X POST \
https://api.iterationlayer.com/sheet-generation/v1/generate \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"format": "xlsx",
"styles": {
"header": {
"is_bold": true,
"background_color": "#4472C4",
"font_color": "#FFFFFF"
}
},
"sheets": [
{
"name": "FY2026 Pipeline",
"columns": [
{
"name": "Region",
"width": 18
},
{
"name": "Account Executive",
"width": 24
},
{
"name": "Plan",
"width": 18
},
{
"name": "Stage",
"width": 16
},
{
"name": "ARR",
"width": 16
},
{
"name": "Renewal",
"width": 16
}
],
"rows": [
[
{
"value": "Germany"
},
{
"value": "Mia Fischer"
},
{
"value": "Enterprise"
},
{
"value": "Contract"
},
{
"value": 182000,
"format": "currency",
"currency_code": "EUR"
},
{
"value": "2026-11-30",
"format": "date"
}
],
[
{
"value": "France"
},
{
"value": "Lucas Moreau"
},
{
"value": "Growth"
},
{
"value": "Security Review"
},
{
"value": 96000,
"format": "currency",
"currency_code": "EUR"
},
{
"value": "2026-09-15",
"format": "date"
}
],
[
{
"value": "United States"
},
{
"value": "Ava Thompson"
},
{
"value": "Enterprise"
},
{
"value": "Pilot"
},
{
"value": 265000,
"format": "currency",
"currency_code": "USD"
},
{
"value": "2026-12-20",
"format": "date"
}
],
[
{
"value": "Canada"
},
{
"value": "Noah Bennett"
},
{
"value": "Startup"
},
{
"value": "Proposal"
},
{
"value": 42000,
"format": "currency",
"currency_code": "USD"
},
{
"value": "2026-08-05",
"format": "date"
}
],
[
{
"value": "Singapore"
},
{
"value": "Ethan Tan"
},
{
"value": "Enterprise"
},
{
"value": "Procurement"
},
{
"value": 118000,
"format": "currency",
"currency_code": "USD"
},
{
"value": "2026-10-12",
"format": "date"
}
],
[
{
"value": "Australia"
},
{
"value": "Chloe Walsh"
},
{
"value": "Growth"
},
{
"value": "Discovery"
},
{
"value": 64000,
"format": "currency",
"currency_code": "USD"
},
{
"value": "2026-07-28",
"format": "date"
}
]
]
}
]
}'
{
"success": true,
"data": {
"buffer": "UEsDBBQAAAAIAA...",
"mime_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
}
}
import { IterationLayer } from "iterationlayer";
const client = new IterationLayer({
apiKey: "YOUR_API_KEY",
});
const result = await client.generateSheet({
format: "xlsx",
styles: {
header: {
is_bold: true,
background_color: "#4472C4",
font_color: "#FFFFFF",
},
},
sheets: [
{
name: "FY2026 Pipeline",
columns: [
{
name: "Region",
width: 18,
},
{
name: "Account Executive",
width: 24,
},
{
name: "Plan",
width: 18,
},
{
name: "Stage",
width: 16,
},
{
name: "ARR",
width: 16,
},
{
name: "Renewal",
width: 16,
},
],
rows: [
[
{
value: "Germany",
},
{
value: "Mia Fischer",
},
{
value: "Enterprise",
},
{
value: "Contract",
},
{
value: 182000,
format: "currency",
currency_code: "EUR",
},
{
value: "2026-11-30",
format: "date",
},
],
[
{
value: "France",
},
{
value: "Lucas Moreau",
},
{
value: "Growth",
},
{
value: "Security Review",
},
{
value: 96000,
format: "currency",
currency_code: "EUR",
},
{
value: "2026-09-15",
format: "date",
},
],
[
{
value: "Spain",
},
{
value: "Sofia Ramos",
},
{
value: "Growth",
},
{
value: "Negotiation",
},
{
value: 74000,
format: "currency",
currency_code: "EUR",
},
{
value: "2026-10-04",
format: "date",
},
],
[
{
value: "United States",
},
{
value: "Ava Thompson",
},
{
value: "Enterprise",
},
{
value: "Pilot",
},
{
value: 265000,
format: "currency",
currency_code: "USD",
},
{
value: "2026-12-20",
format: "date",
},
],
[
{
value: "Canada",
},
{
value: "Noah Bennett",
},
{
value: "Startup",
},
{
value: "Proposal",
},
{
value: 42000,
format: "currency",
currency_code: "USD",
},
{
value: "2026-08-05",
format: "date",
},
],
[
{
value: "Mexico",
},
{
value: "Camila Ortiz",
},
{
value: "Growth",
},
{
value: "Qualified",
},
{
value: 58000,
format: "currency",
currency_code: "USD",
},
{
value: "2026-09-21",
format: "date",
},
],
[
{
value: "Singapore",
},
{
value: "Ethan Tan",
},
{
value: "Enterprise",
},
{
value: "Procurement",
},
{
value: 118000,
format: "currency",
currency_code: "USD",
},
{
value: "2026-10-12",
format: "date",
},
],
[
{
value: "Australia",
},
{
value: "Chloe Walsh",
},
{
value: "Growth",
},
{
value: "Discovery",
},
{
value: 64000,
format: "currency",
currency_code: "USD",
},
{
value: "2026-07-28",
format: "date",
},
],
[
{
value: "Japan",
},
{
value: "Haruto Sato",
},
{
value: "Enterprise",
},
{
value: "Legal",
},
{
value: 143000,
format: "currency",
currency_code: "USD",
},
{
value: "2026-11-08",
format: "date",
},
],
[
{
value: "South Korea",
},
{
value: "Min Seo Park",
},
{
value: "Growth",
},
{
value: "Demo",
},
{
value: 51000,
format: "currency",
currency_code: "USD",
},
{
value: "2026-08-19",
format: "date",
},
],
],
},
],
});
{
"success": true,
"data": {
"buffer": "UEsDBBQAAAAIAA...",
"mime_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
}
}
from iterationlayer import IterationLayer
client = IterationLayer(
api_key="YOUR_API_KEY"
)
result = client.generate_sheet(
format="xlsx",
styles={
"header": {
"is_bold": True,
"background_color": "#4472C4",
"font_color": "#FFFFFF",
},
},
sheets=[
{
"name": "FY2026 Pipeline",
"columns": [
{
"name": "Region",
"width": 18,
},
{
"name": "Account Executive",
"width": 24,
},
{
"name": "Plan",
"width": 18,
},
{
"name": "Stage",
"width": 16,
},
{
"name": "ARR",
"width": 16,
},
{
"name": "Renewal",
"width": 16,
},
],
"rows": [
[
{
"value": "Germany",
},
{
"value": "Mia Fischer",
},
{
"value": "Enterprise",
},
{
"value": "Contract",
},
{
"value": 182000,
"format": "currency",
"currency_code": "EUR",
},
{
"value": "2026-11-30",
"format": "date",
},
],
[
{
"value": "France",
},
{
"value": "Lucas Moreau",
},
{
"value": "Growth",
},
{
"value": "Security Review",
},
{
"value": 96000,
"format": "currency",
"currency_code": "EUR",
},
{
"value": "2026-09-15",
"format": "date",
},
],
[
{
"value": "Spain",
},
{
"value": "Sofia Ramos",
},
{
"value": "Growth",
},
{
"value": "Negotiation",
},
{
"value": 74000,
"format": "currency",
"currency_code": "EUR",
},
{
"value": "2026-10-04",
"format": "date",
},
],
[
{
"value": "United States",
},
{
"value": "Ava Thompson",
},
{
"value": "Enterprise",
},
{
"value": "Pilot",
},
{
"value": 265000,
"format": "currency",
"currency_code": "USD",
},
{
"value": "2026-12-20",
"format": "date",
},
],
[
{
"value": "Canada",
},
{
"value": "Noah Bennett",
},
{
"value": "Startup",
},
{
"value": "Proposal",
},
{
"value": 42000,
"format": "currency",
"currency_code": "USD",
},
{
"value": "2026-08-05",
"format": "date",
},
],
[
{
"value": "Mexico",
},
{
"value": "Camila Ortiz",
},
{
"value": "Growth",
},
{
"value": "Qualified",
},
{
"value": 58000,
"format": "currency",
"currency_code": "USD",
},
{
"value": "2026-09-21",
"format": "date",
},
],
[
{
"value": "Singapore",
},
{
"value": "Ethan Tan",
},
{
"value": "Enterprise",
},
{
"value": "Procurement",
},
{
"value": 118000,
"format": "currency",
"currency_code": "USD",
},
{
"value": "2026-10-12",
"format": "date",
},
],
[
{
"value": "Australia",
},
{
"value": "Chloe Walsh",
},
{
"value": "Growth",
},
{
"value": "Discovery",
},
{
"value": 64000,
"format": "currency",
"currency_code": "USD",
},
{
"value": "2026-07-28",
"format": "date",
},
],
[
{
"value": "Japan",
},
{
"value": "Haruto Sato",
},
{
"value": "Enterprise",
},
{
"value": "Legal",
},
{
"value": 143000,
"format": "currency",
"currency_code": "USD",
},
{
"value": "2026-11-08",
"format": "date",
},
],
[
{
"value": "South Korea",
},
{
"value": "Min Seo Park",
},
{
"value": "Growth",
},
{
"value": "Demo",
},
{
"value": 51000,
"format": "currency",
"currency_code": "USD",
},
{
"value": "2026-08-19",
"format": "date",
},
],
],
},
],
)
{
"success": true,
"data": {
"buffer": "UEsDBBQAAAAIAA...",
"mime_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
}
}
import il "github.com/iterationlayer/sdk-go"
client := il.NewClient("YOUR_API_KEY")
result, err := client.GenerateSheet(
il.GenerateSheetRequest{
Format: "xlsx",
Styles: &il.SheetStyles{
Header: &il.CellStyle{
IsBold: true,
BackgroundColor: "#4472C4",
FontColor: "#FFFFFF",
},
},
Sheets: []il.Sheet{
{
Name: "FY2026 Pipeline",
Columns: []il.SheetColumn{
{
Name: "Region",
Width: 18,
},
{
Name: "Account Executive",
Width: 24,
},
{
Name: "Plan",
Width: 18,
},
{
Name: "Stage",
Width: 16,
},
{
Name: "ARR",
Width: 16,
},
{
Name: "Renewal",
Width: 16,
},
},
Rows: [][]il.SheetCell{
{
{
Value: "Germany",
},
{
Value: "Mia Fischer",
},
{
Value: "Enterprise",
},
{
Value: "Contract",
},
{
Value: 182000,
Format: "currency",
CurrencyCode: "EUR",
},
{
Value: "2026-11-30",
Format: "date",
},
},
{
{
Value: "France",
},
{
Value: "Lucas Moreau",
},
{
Value: "Growth",
},
{
Value: "Security Review",
},
{
Value: 96000,
Format: "currency",
CurrencyCode: "EUR",
},
{
Value: "2026-09-15",
Format: "date",
},
},
{
{
Value: "Spain",
},
{
Value: "Sofia Ramos",
},
{
Value: "Growth",
},
{
Value: "Negotiation",
},
{
Value: 74000,
Format: "currency",
CurrencyCode: "EUR",
},
{
Value: "2026-10-04",
Format: "date",
},
},
{
{
Value: "United States",
},
{
Value: "Ava Thompson",
},
{
Value: "Enterprise",
},
{
Value: "Pilot",
},
{
Value: 265000,
Format: "currency",
CurrencyCode: "USD",
},
{
Value: "2026-12-20",
Format: "date",
},
},
{
{
Value: "Canada",
},
{
Value: "Noah Bennett",
},
{
Value: "Startup",
},
{
Value: "Proposal",
},
{
Value: 42000,
Format: "currency",
CurrencyCode: "USD",
},
{
Value: "2026-08-05",
Format: "date",
},
},
{
{
Value: "Mexico",
},
{
Value: "Camila Ortiz",
},
{
Value: "Growth",
},
{
Value: "Qualified",
},
{
Value: 58000,
Format: "currency",
CurrencyCode: "USD",
},
{
Value: "2026-09-21",
Format: "date",
},
},
{
{
Value: "Singapore",
},
{
Value: "Ethan Tan",
},
{
Value: "Enterprise",
},
{
Value: "Procurement",
},
{
Value: 118000,
Format: "currency",
CurrencyCode: "USD",
},
{
Value: "2026-10-12",
Format: "date",
},
},
{
{
Value: "Australia",
},
{
Value: "Chloe Walsh",
},
{
Value: "Growth",
},
{
Value: "Discovery",
},
{
Value: 64000,
Format: "currency",
CurrencyCode: "USD",
},
{
Value: "2026-07-28",
Format: "date",
},
},
{
{
Value: "Japan",
},
{
Value: "Haruto Sato",
},
{
Value: "Enterprise",
},
{
Value: "Legal",
},
{
Value: 143000,
Format: "currency",
CurrencyCode: "USD",
},
{
Value: "2026-11-08",
Format: "date",
},
},
{
{
Value: "South Korea",
},
{
Value: "Min Seo Park",
},
{
Value: "Growth",
},
{
Value: "Demo",
},
{
Value: 51000,
Format: "currency",
CurrencyCode: "USD",
},
{
Value: "2026-08-19",
Format: "date",
},
},
},
},
},
},
)
{
"success": true,
"data": {
"buffer": "UEsDBBQAAAAIAA...",
"mime_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
}
}
Official SDKs for every major language
Install the SDK, set your API key, and start chaining requests. Full type safety, automatic retries, and idiomatic error handling included.
Your data stays in the EU
Your data is processed on EU servers and never stored beyond temporary logs. Zero retention, GDPR-compliant by design, with a Data Processing Agreement available for every customer. Learn more about our security practices .
No data storage, no model training
We don't store your files or processing results, and your data is never used to train or improve AI models. Logs are automatically deleted after 90 days.
EU-hosted infrastructure
All processing runs on servers located in the European Union. Your data never leaves the EU.
GDPR-compliant by design
Full compliance with EU data protection regulations. Data Processing Agreement available for all customers.
Pricing
Start with free trial credits. No credit card required.
Developer
For individuals & small projects
Startup
Save 40%For growing teams
Business
Save 47%For high-volume workloads
Or pay as you go from $0.022/credit with automatic volume discounts.
Still evaluating?
Compare Iteration Layer against the biggest alternatives at a glance, then open the full head-to-head pages when you want the details.
| Feature | Iteration Layer | SheetJS | ExcelJS | OpenPyXL |
|---|---|---|---|---|
| Formula support |
Yes
Generate spreadsheets with Excel-compatible formulas
|
Limited
Formula support is limited in the free Community Edition — Pro required for full support
|
Yes
Full formula support through programmatic API calls
|
Yes
Full formula support through programmatic API calls
|
| Multi-sheet support |
Yes
Generate workbooks with multiple named sheets
|
Yes
Full multi-sheet workbook support
|
Yes
Full multi-sheet workbook support with programmatic API
|
Yes
Full multi-sheet workbook support with programmatic API
|
| Output formats |
3 formats
XLSX, CSV, and Markdown output
|
4+ formats
XLSX, CSV, HTML, and ODS output supported
|
2 formats
XLSX and CSV output supported
|
1 format
XLSX output only
|
| Sheet definition style |
Declarative JSON
Entire spreadsheet described declaratively in a single JSON payload with styling included
|
Low-level cells
Low-level cell object manipulation — styling requires the paid Pro edition
|
Imperative API
Spreadsheets built row by row, cell by cell with imperative API calls
|
Imperative API
Spreadsheets built row by row with imperative cell-by-cell iteration
|
Frequently asked questions
What output formats are supported?
Can I create multiple sheets?
How do formulas work?
Can I use custom fonts?
How does cell formatting work?
Can I merge cells?
Built for how you work
Whether you're building pipelines in code, automating workflows, orchestrating AI agents, or shipping client projects — Iteration Layer fits your process.
AI Agents
Connect one MCP server for document, image, website, spreadsheet, and generated-output workflows.
MCP Users
Connect one MCP server that gives Claude, Cursor, Windsurf, and other clients useful content-processing tools.
Developers
One API for solo developers and small dev teams building content-processing workflows.
Operations Teams
Automate the manual document and image tasks that eat hours every week — no custom code required.
Automation Builders
Build unattended document, image, spreadsheet, and reporting workflows without stitching together five services.
EU SaaS Companies
Add document, image, spreadsheet, and PDF workflows without adding another processor chain.
EU AI Agencies
Sell document automation to EU clients with a simpler answer for file processing, retention, and processor documentation.
Agencies
Turn one client workflow into a repeatable delivery system with one account, one credit pool, and project-level control.