univer

Framework

dream-num/univer

Embeddable Office SDK for spreadsheets, docs, slides, and AI agent workflows.

Overview

Univer is an open-source SDK for building office applications with spreadsheets, documents, slides, and PDF support. It features Canvas-based rendering, a formula engine, and a unified Facade API that runs in both browsers and Node.js. Designed for embedding into products and powering headless AI agent workflows.

README Preview

\n\n\n\n**The Office Harness for AI Agents**\n\nSpreadsheets · Documents · Presentations · Bases · Boards · PDFs (coming soon)\n\nHigh-performance, fully customizable Office SDK\n\nBuild embeddable productivity experiences with a plugin architecture, Canvas-based rendering,\na formula engine, and one Facade API that works in the browser and on Node.js.\n\nEnglish | [简体中文](./docs/readme/zh-CN.md) | [繁體中文](./docs/readme/zh-TW.md) | [日本語](./docs/readme/ja-JP.md) | [한국어](./docs/readme/ko-KR.md) | [Español](./docs/readme/es-ES.md)\n\n[🌐 Website](https://univer.ai/) | [📖 Documentation](https://docs.univer.ai) | [✨ Showcase](https://docs.univer.ai/showcase) | [📘 API Reference](https://docs.univer.ai/reference/classes/univer) | [📝 Blog](https://docs.univer.ai/blog)\n\n[](https://github.com/dream-num/univer/releases)\n[](./LICENSE)\n[](https://github.com/dream-num/univer/actions/workflows/build-packages.yml)\n[](https://www.codefactor.io/repository/github/dream-num/univer/overview/dev)\n[](https://codecov.io/gh/dream-num/univer)\n\n[](https://github.com/dream-num/univer/stargazers)\n[](https://github.com/dream-num/univer/graphs/contributors)\n[](https://github.com/dream-num/univer/issues)\n[](https://github.com/dream-num/univer/commits/dev/)\n\n[](https://discord.gg/z3NKNT6D2f)\n[](https://twitter.com/univerhq)\n[](https://opencollective.com/univer)\n\n[](https://trendshift.io/repositories/4376)\n\n\n\n## ✨ What is Univer?\n\nUniver is an open-source SDK for creating office applications inside your own product. It gives you the building blocks for spreadsheet, document, and presentation experiences without forcing you into a hosted app or a fixed UI.\n\nUse Univer when you need to:\n\n- Embed spreadsheet or document editing into a SaaS product, internal tool, BI workflow, or AI application.\n- Run workbook/document processing on the server with the same architecture used in the browser.\n- Compose only the features you need through plugins or start quickly with presets.\

FAQ (1)

Troubleshooting
Why do formulas using defined names return #NAME? after renaming a sheet in Univer (headless/Node)?

This is a stale sheet-name state bug in @univerjs/engine-formula / @univerjs/sheets-formula 1.0.3. After calling sheet.setName(), the defined name's formulaOrRefString is correctly rewritten to the new sheet name (e.g. Rates2!$A$1), but the formula engine still resolves the name against the old sheet-name mapping, so every formula referencing the name (e.g. =Q+1) returns #NAME? on the next calculation. Calling setRef() with the same string does not repair it, and deleting then re-inserting the defined name returns #REF! instead. Workaround: after renaming a sheet, save the workbook snapshot (wb.save()) and load that snapshot into a fresh Univer instance — the name then resolves against the correct sheet-name state and formulas compute normally again.

GitHub Issue #7805