Put spreadsheets to work
in the back office.
Pricing models, reports and reconciliations, run by your services, your schedules and your agents. No rewrite, no screen. In Node, on your servers.
Four jobs it does on day one.
The spreadsheet logic you already have, running where your code runs.
A model as an API
Load a pricing or rating workbook once and serve requests against it. A request is a write and a read; the model stores one formula per range, so each one is cheap.
app.post("/quote", async (req, res) => {
model.getRange("Inputs!B2").setValue(req.body.volume);
res.json({ quote: model.getRange("Quote!B10").getValue() });
});A calc server for your app
The grid in the browser stays light; the server recalculates. Same engine both sides, same results.
const wb = await WorkbookIO.read("budget.xlsx");
wb.getRange("Inputs!B2:B9").setValues(req.body.inputs);
res.json(wb.getRange("Summary!B2:F20").getValues());Reports at scale
Fill a template with data, recalculate, export xlsx. Scheduled, in a queue, in a container.
npx sheetxl -f fill-report.ts template.xlsx --out report-2026-11.xlsx -- --month 2026-11Import and audit
Read any workbook, walk precedents and dependents, find errors and write back. The agent tools do this one file at a time; the server does it in bulk.
npx sheetxl -e "wb.getWorksheet().getRegions('anomalies')" upload.xlsxFour ways to run it.
One engine. Give it to an agent, call it from your code, run it from a shell, or schedule a script.
MCP server
The engine as tools for an agent: sessions, commits, undo and an audit log.
An agent pipeline. A nightly job with a model in the loop.
npx -y @sheetxl/mcpLibrary
The engine in your Node process.
A service, a handler, a worker.
npm install @sheetxl/sdk @sheetxl/ioCLI
The engine from a shell. Query, convert, script.
Cron, CI, a Dockerfile, a one-off.
npx sheetxl book.xlsx --out book.csvAutomation
A TypeScript script that takes a workbook and arguments and returns the changed workbook. Run it from the CLI, a schedule, or your own code.
The same transform, in many places.
npx sheetxl -f transform.ts book.xlsx --saveRunner.run(wb, args, { target: "transform.ts" }) // from @sheetxl/runnerAgents in the back office.
The MCP server and the CLI run on the same engine, so an agent pipeline can call what a person uses in the grid.
The answers Excel gives, without Excel.
Deterministic. No Excel install, no LibreOffice, no network call in the loop.
Figures measured on the reference model, October 2026. Memory and timing vary with the workbook.
Deterministic. Local. Reversible.
An engine you can put in a production path, because every run is repeatable, nothing leaves your infrastructure, and every change is on the record.
Deterministic
Same inputs, same outputs, every run. No Excel install, no LibreOffice, no network call in the loop.
Local to your infrastructure
No phone-home. The key is verified on your server. Containers, serverless and air-gapped all work.
Reversible and auditable
Every change a script makes is listed in the action log, so a job's output can be audited and a bad run traced to the cell.
Excel-grade, verified
545+ functions checked against Excel. Dates, percents and errors are typed values, so what you read is what Excel would show.
Built to be run, not demoed.
- Runs anywhere Node runs: containers, serverless, air-gapped.
- No phone-home. The key is verified on your server.
- Deterministic. No Excel install, no LibreOffice, no network.
- A million formulas filled and calculated in under half a second, saved in about a second.
- 160 MB for the reference model; one formula per range, not one per cell.
- An action log: every change a script makes is listed, so a job's output can be audited.
One engine, three layers.
A component for your app, a library for your server, a plugin for the agent you already run. Most spreadsheet vendors cover one layer.
| In your appA spreadsheet UI you embed | On your serverA calculation library for Node | With your agentA plugin for the agent you already run | |
|---|---|---|---|
| SheetXL | |||
| Univer | |||
| GRID | |||
| SpreadJS | — | — | |
| SheetJS Pro | — | — | |
| HyperFormula | — | — | |
| Coherent Spark | — | Their server | — |
| Handsontable | — | — | — |
| AG Grid | — | — | — |
| Shortcut | — | — | Their agent |
| Tracelight | — | — | Their agent |
Checked November 2026 against each vendor's public product and pricing pages. A check means a supported product for that layer that runs where you run. "Their server" and "Their agent" mean the vendor does it inside their own product: on their servers, or with their AI, not yours.
One price per app.
Apps pay per app. Trying it is free, and your files are never hostage.
- 10 developer licenses included
- Evaluation is free, for as long as you need
- Files always open, edit and save, on every tier, forever
- Same price as SheetXL for Apps; the two together are two app licenses
Startups: $999 the first year.
Many apps or many runtimes: enterprise terms, talk to us.
Run your spreadsheets where your code runs.
Pick a path: paste the prompt into your agent, install the library, or run the CLI.
Paste into Claude Code, Codex, Cursor or any agent that can run a shell.
Install SheetXL skills: npx -y skills add sheetxl/skills -g --allThen build a small Node service that loads pricing-model.xlsx, sets Inputs!B2 from each request and returns Quote!B10. Save nothing. Use the SheetXL skill's node-app reference.