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
Ship faster with built-in capabilities
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.
MCP (Model Context Protocol)
Connect directly to AI agents. Use our APIs as tools in Claude, GPT, and other LLM-powered workflows.
Zapier
Connect to 5,000+ apps with Zapier integration.
n8n
Build automated workflows with n8n integration.
Three steps to your first workflow
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
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.
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": "Q1 Revenue",
"columns": [
{
"name": "Region",
"width": 20
},
{
"name": "Jan",
"width": 15
},
{
"name": "Feb",
"width": 15
},
{
"name": "Total",
"width": 15
}
],
"rows": [
[
{
"value": "EMEA",
"from_col": 0,
"to_col": 3,
"styles": {
"is_bold": true
}
}
],
[
{
"value": "Germany"
},
{
"value": 12500,
"format": "currency",
"currency_code": "EUR"
},
{
"value": 14200,
"format": "currency",
"currency_code": "EUR"
},
{
"value": "=SUM(B3:C3)",
"format": "currency",
"currency_code": "EUR"
}
],
[
{
"value": "France"
},
{
"value": 9800,
"format": "currency",
"currency_code": "EUR",
"number_style": "space_comma"
},
{
"value": 11300,
"format": "currency",
"currency_code": "EUR",
"number_style": "space_comma"
},
{
"value": "=SUM(B4:C4)",
"format": "currency",
"currency_code": "EUR"
}
]
]
}
]
}'
{
"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: "Q1 Revenue",
columns: [
{
name: "Region",
width: 20,
},
{
name: "Jan",
width: 15,
},
{
name: "Feb",
width: 15,
},
{
name: "Total",
width: 15,
},
],
rows: [
[
{
value: "EMEA",
from_col: 0,
to_col: 3,
styles: { is_bold: true },
},
],
[
{
value: "Germany",
},
{
value: 12500,
format: "currency",
currency_code: "EUR",
},
{
value: 14200,
format: "currency",
currency_code: "EUR",
},
{
value: "=SUM(B3:C3)",
format: "currency",
currency_code: "EUR",
},
],
[
{
value: "France",
},
{
value: 9800,
format: "currency",
currency_code: "EUR",
number_style: "space_comma",
},
{
value: 11300,
format: "currency",
currency_code: "EUR",
number_style: "space_comma",
},
{
value: "=SUM(B4:C4)",
format: "currency",
currency_code: "EUR",
},
],
],
},
],
});
{
"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": "Q1 Revenue",
"columns": [
{
"name": "Region",
"width": 20,
},
{
"name": "Jan",
"width": 15,
},
{
"name": "Feb",
"width": 15,
},
{
"name": "Total",
"width": 15,
},
],
"rows": [
[
{
"value": "EMEA",
"from_col": 0,
"to_col": 3,
"styles": {"is_bold": True},
},
],
[
{
"value": "Germany",
},
{
"value": 12500,
"format": "currency",
"currency_code": "EUR",
},
{
"value": 14200,
"format": "currency",
"currency_code": "EUR",
},
{
"value": "=SUM(B3:C3)",
"format": "currency",
"currency_code": "EUR",
},
],
[
{
"value": "France",
},
{
"value": 9800,
"format": "currency",
"currency_code": "EUR",
"number_style": "space_comma",
},
{
"value": 11300,
"format": "currency",
"currency_code": "EUR",
"number_style": "space_comma",
},
{
"value": "=SUM(B4:C4)",
"format": "currency",
"currency_code": "EUR",
},
],
],
},
],
)
{
"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: "Q1 Revenue",
Columns: []il.SheetColumn{
{
Name: "Region",
Width: 20,
},
{
Name: "Jan",
Width: 15,
},
{
Name: "Feb",
Width: 15,
},
{
Name: "Total",
Width: 15,
},
},
Rows: [][]il.SheetCell{
{
{
Value: "EMEA",
FromCol: ptr(0),
ToCol: ptr(3),
Styles: &il.CellStyle{IsBold: true},
},
},
{
{
Value: "Germany",
},
{
Value: 12500,
Format: "currency",
CurrencyCode: "EUR",
},
{
Value: 14200,
Format: "currency",
CurrencyCode: "EUR",
},
{
Value: "=SUM(B3:C3)",
Format: "currency",
CurrencyCode: "EUR",
},
},
{
{
Value: "France",
},
{
Value: 9800,
Format: "currency",
CurrencyCode: "EUR",
NumberStyle: "space_comma",
},
{
Value: 11300,
Format: "currency",
CurrencyCode: "EUR",
NumberStyle: "space_comma",
},
{
Value: "=SUM(B4:C4)",
Format: "currency",
CurrencyCode: "EUR",
},
},
},
},
},
},
)
{
"success": true,
"data": {
"buffer": "UEsDBBQAAAAIAA...",
"mime_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
}
}
Stop building workflows from scratch
Browse ready-made recipes for real-world document and image workflows. Pick one, tweak it, ship it.
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 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 Timesheet Export
Generate an XLSX timesheet with logged hours, hourly rates, per-entry amount formulas, and totals for client billing or payroll.
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
We don't store your files or processing results. Logs are automatically deleted after 30 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
-
1,000 credits / month1,000 image transformations 500 document generations 500 image generations 500 sheet generations 100 document extractions
-
All APIs included
-
Free trial credits per API
-
Email support
-
Budget caps per key
Startup
Save 40%For growing teams
-
5,000 credits / month5,000 image transformations 2,500 document generations 2,500 image generations 2,500 sheet generations 500 document extractions
-
All APIs included
-
Free trial credits per API
-
Priority support
-
Budget caps per key
Business
Save 47%For high-volume workloads
-
15,000 credits / month15,000 image transformations 7,500 document generations 7,500 image generations 7,500 sheet generations 1,500 document extractions
-
All APIs included
-
Free trial credits per API
-
Priority support
-
Budget caps per key
Frequently asked questions
What output formats are supported?
The API generates CSV, Markdown, and XLSX spreadsheets. CSV is ideal for data interchange, Markdown for documentation and LLMs, and XLSX for Excel with full formatting support.
Can I create multiple sheets?
Yes, for XLSX and Markdown output. XLSX creates native multi-sheet workbooks. Markdown renders each sheet as a headed table. CSV supports only a single sheet.
How do formulas work?
For XLSX, formulas are written natively and evaluated by Excel. For CSV and Markdown, simple aggregation formulas (SUM, AVERAGE, COUNT, MIN, MAX) are computed server-side and the result is written as a value.
Can I use custom fonts?
Yes, for XLSX output. Embed any TTF, OTF, WOFF, or WOFF2 font by including its base64-encoded buffer in the request. Specify weight and style for each font variant.
How does cell formatting work?
Each cell can have a format (currency, percentage, date, etc.) and style overrides (font, color, alignment). Set base styles at the sheet level and override per cell.
Can I merge cells?
Yes, for XLSX output. Define merged cell ranges with start/end row and column coordinates. Merged cells can contain a value that spans the range.