Iteration Layer
Menu
Features
Use Cases
Docs
Resources
Pricing
Sheet Generation

Generate XLSX, CSV, and Markdown spreadsheets from structured JSON

Generate XLSX, CSV, and Markdown tables from structured JSON with formulas, styling, and formatting.

Zero data retention Made & hosted in the EU 100 trial credits

See Sheet Generation in action

Start from a real implementation pattern, not blank docs. See the input, runnable code, and structured output your workflow can use next.

Input Preview
{
  "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": "Netherlands" }, { "value": "Ava Thompson" }, { "value": "Enterprise" }, { "value": "Pilot" }, { "value": 265000, "format": "currency", "currency_code": "EUR" }, { "value": "2026-12-20", "format": "date" }],
        [{ "value": "Italy" }, { "value": "Noah Bennett" }, { "value": "Startup" }, { "value": "Proposal" }, { "value": 42000, "format": "currency", "currency_code": "EUR" }, { "value": "2026-08-05", "format": "date" }],
        [{ "value": "Poland" }, { "value": "Camila Ortiz" }, { "value": "Growth" }, { "value": "Qualified" }, { "value": 58000, "format": "currency", "currency_code": "EUR" }, { "value": "2026-09-21", "format": "date" }],
        [{ "value": "Austria" }, { "value": "Ethan Tan" }, { "value": "Enterprise" }, { "value": "Procurement" }, { "value": 118000, "format": "currency", "currency_code": "EUR" }, { "value": "2026-10-12", "format": "date" }],
        [{ "value": "Sweden" }, { "value": "Chloe Walsh" }, { "value": "Growth" }, { "value": "Discovery" }, { "value": 64000, "format": "currency", "currency_code": "EUR" }, { "value": "2026-07-28", "format": "date" }],
        [{ "value": "Belgium" }, { "value": "Haruto Sato" }, { "value": "Enterprise" }, { "value": "Legal" }, { "value": 143000, "format": "currency", "currency_code": "EUR" }, { "value": "2026-11-08", "format": "date" }],
        [{ "value": "Denmark" }, { "value": "Min Seo Park" }, { "value": "Growth" }, { "value": "Demo" }, { "value": 51000, "format": "currency", "currency_code": "EUR" }, { "value": "2026-08-19", "format": "date" }]
      ]
    }
  ]
}
Output Preview
Region Account Executive Plan Stage ARR Renewal
GermanyMia FischerEnterpriseContractEUR 182,0002026-11-30
FranceLucas MoreauGrowthSecurity ReviewEUR 96,0002026-09-15
SpainSofia RamosGrowthNegotiationEUR 74,0002026-10-04
NetherlandsAva ThompsonEnterprisePilotEUR 265,0002026-12-20
ItalyNoah BennettStartupProposalEUR 42,0002026-08-05
PolandCamila OrtizGrowthQualifiedEUR 58,0002026-09-21
AustriaEthan TanEnterpriseProcurementEUR 118,0002026-10-12
SwedenChloe WalshGrowthDiscoveryEUR 64,0002026-07-28
BelgiumHaruto SatoEnterpriseLegalEUR 143,0002026-11-08
DenmarkMin Seo ParkGrowthDemoEUR 51,0002026-08-19
Request
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": "Netherlands"
          },
          {
            "value": "Ava Thompson"
          },
          {
            "value": "Enterprise"
          },
          {
            "value": "Pilot"
          },
          {
            "value": 265000,
            "format": "currency",
            "currency_code": "EUR"
          },
          {
            "value": "2026-12-20",
            "format": "date"
          }
        ],
        [
          {
            "value": "Italy"
          },
          {
            "value": "Noah Bennett"
          },
          {
            "value": "Startup"
          },
          {
            "value": "Proposal"
          },
          {
            "value": 42000,
            "format": "currency",
            "currency_code": "EUR"
          },
          {
            "value": "2026-08-05",
            "format": "date"
          }
        ],
        [
          {
            "value": "Austria"
          },
          {
            "value": "Ethan Tan"
          },
          {
            "value": "Enterprise"
          },
          {
            "value": "Procurement"
          },
          {
            "value": 118000,
            "format": "currency",
            "currency_code": "EUR"
          },
          {
            "value": "2026-10-12",
            "format": "date"
          }
        ],
        [
          {
            "value": "Sweden"
          },
          {
            "value": "Chloe Walsh"
          },
          {
            "value": "Growth"
          },
          {
            "value": "Discovery"
          },
          {
            "value": 64000,
            "format": "currency",
            "currency_code": "EUR"
          },
          {
            "value": "2026-07-28",
            "format": "date"
          }
        ]
      ]
    }
  ]
}'
Response
{
  "success": true,
  "data": {
    "buffer": "UEsDBBQAAAAIAA...",
    "mime_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
  }
}
Request
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: "Netherlands",
          },
          {
            value: "Ava Thompson",
          },
          {
            value: "Enterprise",
          },
          {
            value: "Pilot",
          },
          {
            value: 265000,
            format: "currency",
            currency_code: "EUR",
          },
          {
            value: "2026-12-20",
            format: "date",
          },
        ],
        [
          {
            value: "Italy",
          },
          {
            value: "Noah Bennett",
          },
          {
            value: "Startup",
          },
          {
            value: "Proposal",
          },
          {
            value: 42000,
            format: "currency",
            currency_code: "EUR",
          },
          {
            value: "2026-08-05",
            format: "date",
          },
        ],
        [
          {
            value: "Poland",
          },
          {
            value: "Camila Ortiz",
          },
          {
            value: "Growth",
          },
          {
            value: "Qualified",
          },
          {
            value: 58000,
            format: "currency",
            currency_code: "EUR",
          },
          {
            value: "2026-09-21",
            format: "date",
          },
        ],
        [
          {
            value: "Austria",
          },
          {
            value: "Ethan Tan",
          },
          {
            value: "Enterprise",
          },
          {
            value: "Procurement",
          },
          {
            value: 118000,
            format: "currency",
            currency_code: "EUR",
          },
          {
            value: "2026-10-12",
            format: "date",
          },
        ],
        [
          {
            value: "Sweden",
          },
          {
            value: "Chloe Walsh",
          },
          {
            value: "Growth",
          },
          {
            value: "Discovery",
          },
          {
            value: 64000,
            format: "currency",
            currency_code: "EUR",
          },
          {
            value: "2026-07-28",
            format: "date",
          },
        ],
        [
          {
            value: "Belgium",
          },
          {
            value: "Haruto Sato",
          },
          {
            value: "Enterprise",
          },
          {
            value: "Legal",
          },
          {
            value: 143000,
            format: "currency",
            currency_code: "EUR",
          },
          {
            value: "2026-11-08",
            format: "date",
          },
        ],
        [
          {
            value: "Denmark",
          },
          {
            value: "Min Seo Park",
          },
          {
            value: "Growth",
          },
          {
            value: "Demo",
          },
          {
            value: 51000,
            format: "currency",
            currency_code: "EUR",
          },
          {
            value: "2026-08-19",
            format: "date",
          },
        ],
      ],
    },
  ],
});
Response
{
  "success": true,
  "data": {
    "buffer": "UEsDBBQAAAAIAA...",
    "mime_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
  }
}
Request
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": "Netherlands",
                    },
                    {
                        "value": "Ava Thompson",
                    },
                    {
                        "value": "Enterprise",
                    },
                    {
                        "value": "Pilot",
                    },
                    {
                        "value": 265000,
                        "format": "currency",
                        "currency_code": "EUR",
                    },
                    {
                        "value": "2026-12-20",
                        "format": "date",
                    },
                ],
                [
                    {
                        "value": "Italy",
                    },
                    {
                        "value": "Noah Bennett",
                    },
                    {
                        "value": "Startup",
                    },
                    {
                        "value": "Proposal",
                    },
                    {
                        "value": 42000,
                        "format": "currency",
                        "currency_code": "EUR",
                    },
                    {
                        "value": "2026-08-05",
                        "format": "date",
                    },
                ],
                [
                    {
                        "value": "Poland",
                    },
                    {
                        "value": "Camila Ortiz",
                    },
                    {
                        "value": "Growth",
                    },
                    {
                        "value": "Qualified",
                    },
                    {
                        "value": 58000,
                        "format": "currency",
                        "currency_code": "EUR",
                    },
                    {
                        "value": "2026-09-21",
                        "format": "date",
                    },
                ],
                [
                    {
                        "value": "Austria",
                    },
                    {
                        "value": "Ethan Tan",
                    },
                    {
                        "value": "Enterprise",
                    },
                    {
                        "value": "Procurement",
                    },
                    {
                        "value": 118000,
                        "format": "currency",
                        "currency_code": "EUR",
                    },
                    {
                        "value": "2026-10-12",
                        "format": "date",
                    },
                ],
                [
                    {
                        "value": "Sweden",
                    },
                    {
                        "value": "Chloe Walsh",
                    },
                    {
                        "value": "Growth",
                    },
                    {
                        "value": "Discovery",
                    },
                    {
                        "value": 64000,
                        "format": "currency",
                        "currency_code": "EUR",
                    },
                    {
                        "value": "2026-07-28",
                        "format": "date",
                    },
                ],
                [
                    {
                        "value": "Belgium",
                    },
                    {
                        "value": "Haruto Sato",
                    },
                    {
                        "value": "Enterprise",
                    },
                    {
                        "value": "Legal",
                    },
                    {
                        "value": 143000,
                        "format": "currency",
                        "currency_code": "EUR",
                    },
                    {
                        "value": "2026-11-08",
                        "format": "date",
                    },
                ],
                [
                    {
                        "value": "Denmark",
                    },
                    {
                        "value": "Min Seo Park",
                    },
                    {
                        "value": "Growth",
                    },
                    {
                        "value": "Demo",
                    },
                    {
                        "value": 51000,
                        "format": "currency",
                        "currency_code": "EUR",
                    },
                    {
                        "value": "2026-08-19",
                        "format": "date",
                    },
                ],
            ],
        },
    ],
)
Response
{
  "success": true,
  "data": {
    "buffer": "UEsDBBQAAAAIAA...",
    "mime_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
  }
}
Request
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: "Netherlands",
            },
            {
              Value: "Ava Thompson",
            },
            {
              Value: "Enterprise",
            },
            {
              Value: "Pilot",
            },
            {
              Value:        265000,
              Format:       "currency",
              CurrencyCode: "EUR",
            },
            {
              Value:  "2026-12-20",
              Format: "date",
            },
          },
          {
            {
              Value: "Italy",
            },
            {
              Value: "Noah Bennett",
            },
            {
              Value: "Startup",
            },
            {
              Value: "Proposal",
            },
            {
              Value:        42000,
              Format:       "currency",
              CurrencyCode: "EUR",
            },
            {
              Value:  "2026-08-05",
              Format: "date",
            },
          },
          {
            {
              Value: "Poland",
            },
            {
              Value: "Camila Ortiz",
            },
            {
              Value: "Growth",
            },
            {
              Value: "Qualified",
            },
            {
              Value:        58000,
              Format:       "currency",
              CurrencyCode: "EUR",
            },
            {
              Value:  "2026-09-21",
              Format: "date",
            },
          },
          {
            {
              Value: "Austria",
            },
            {
              Value: "Ethan Tan",
            },
            {
              Value: "Enterprise",
            },
            {
              Value: "Procurement",
            },
            {
              Value:        118000,
              Format:       "currency",
              CurrencyCode: "EUR",
            },
            {
              Value:  "2026-10-12",
              Format: "date",
            },
          },
          {
            {
              Value: "Sweden",
            },
            {
              Value: "Chloe Walsh",
            },
            {
              Value: "Growth",
            },
            {
              Value: "Discovery",
            },
            {
              Value:        64000,
              Format:       "currency",
              CurrencyCode: "EUR",
            },
            {
              Value:  "2026-07-28",
              Format: "date",
            },
          },
          {
            {
              Value: "Belgium",
            },
            {
              Value: "Haruto Sato",
            },
            {
              Value: "Enterprise",
            },
            {
              Value: "Legal",
            },
            {
              Value:        143000,
              Format:       "currency",
              CurrencyCode: "EUR",
            },
            {
              Value:  "2026-11-08",
              Format: "date",
            },
          },
          {
            {
              Value: "Denmark",
            },
            {
              Value: "Min Seo Park",
            },
            {
              Value: "Growth",
            },
            {
              Value: "Demo",
            },
            {
              Value:        51000,
              Format:       "currency",
              CurrencyCode: "EUR",
            },
            {
              Value:  "2026-08-19",
              Format: "date",
            },
          },
        },
      },
    },
  },
)
Response
{
  "success": true,
  "data": {
    "buffer": "UEsDBBQAAAAIAA...",
    "mime_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
  }
}

Use the same workflow from code, agents, or n8n

When an automation moves from prototype to production, you should not have to rebuild it for every environment. Iteration Layer lets scripts, agents, and n8n workflows call the same European AI workflow runtime.

Input 40+ file formats
Extraction Documents, websites, and markdown
Generation Documents, images, and sheets
Output Structured format

Fits into your existing stack

Native SDKs for TypeScript, Python, and Go. OpenAPI spec for everything else. MCP server for AI agents and Claude Code skills. n8n integration for visual workflows.

EU AI workflow runtime

Run document, image, and file steps through one EU-hosted workflow layer with shared API conventions and billing.

Agent-ready by design

Expose the same document and image actions to MCP tools and Claude Code skills, then reuse the API contract when workflows graduate into scripts or automations.

Verified n8n node

Install the verified Iteration Layer node in n8n, then route documents and generated files through the same provider from visual workflows.

Three steps to your first spreadsheet

01

Define your columns

Specify column names and optional widths. Columns define the header row and set the structure for your spreadsheet.

02

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.

03

Get your spreadsheet

Receive the generated spreadsheet as base64-encoded JSON. CSV for data pipelines, Markdown for documentation, XLSX for Excel with full formatting.


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.

European by design

Your data is processed on EU-hosted infrastructure and never stored beyond temporary logs. Zero data retention, GDPR-compliant workflows, and a Data Processing Agreement are available for every customer. Learn more about our security practices .

EU-hosted core processing

Application and processing infrastructure runs in Europe, with provider-scope ISO 27001 and BSI C5 evidence documented for procurement reviews.

Zero data retention

Customer files and processing results are not stored after the request. Usage logs are retained for 90 days and automatically deleted.

Clear answers for security teams

Give reviewers the answers they need up front: where files are processed, what is retained, which subprocessors are involved, and how AI inputs, outputs, review gates, and audit records move through each workflow.

Pricing

Start usage-based. Switch to a subscription when your volume becomes predictable.

Pay as you go

Usage-based

$0.099 to $0.069 / credit

Graduated pricing. Your effective rate decreases automatically as monthly usage grows.

  • No monthly commitment
  • Pay only for credits used
  • Automatic volume discounts as usage grows
Subscriptions

Predictable volume

From $19 /month

Fixed recurring credit packs with lower effective credit prices for steady usage.

  • Lower effective per-credit prices
  • Fixed recurring credit packs
  • Predictable monthly budget
Trial Week

Try Iteration Layer with 100 credits

$1 / 7 days

Start with one shared trial pool before choosing subscription or pay-as-you-go billing.

All APIs included 7-day trial Project-based budget caps Auto overage billing

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?
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.

Build your first workflow in minutes

Chain our APIs into a workflow you can test with your own data during the 7-day trial.

Zero data retention Made & hosted in the EU 100 trial credits