snapshot of https://github.com/dream-num/univer.git (dev, 2026-09-16; blobs > 131072B omitted)
Some checks failed
📦 Build / build (push) Has been cancelled
🧪 CI Test / test shard (1/4) (push) Has been cancelled
🧪 CI Test / test shard (2/4) (push) Has been cancelled
🧪 CI Test / test shard (3/4) (push) Has been cancelled
🧪 CI Test / test shard (4/4) (push) Has been cancelled
🧪 CI Test / test (push) Has been cancelled
🧪 CI Test / eslint (push) Has been cancelled
🧪 CI Test / typecheck (push) Has been cancelled
🔫 Sync to Pro / dispatch-sync (push) Has been cancelled
🔮 Sync Mirror / sync (push) Has been cancelled
Some checks failed
📦 Build / build (push) Has been cancelled
🧪 CI Test / test shard (1/4) (push) Has been cancelled
🧪 CI Test / test shard (2/4) (push) Has been cancelled
🧪 CI Test / test shard (3/4) (push) Has been cancelled
🧪 CI Test / test shard (4/4) (push) Has been cancelled
🧪 CI Test / test (push) Has been cancelled
🧪 CI Test / eslint (push) Has been cancelled
🧪 CI Test / typecheck (push) Has been cancelled
🔫 Sync to Pro / dispatch-sync (push) Has been cancelled
🔮 Sync Mirror / sync (push) Has been cancelled
This commit is contained in:
372
README.md
Normal file
372
README.md
Normal file
@@ -0,0 +1,372 @@
|
||||
<div align="center">
|
||||
|
||||
<img src="./docs/img/banner.png" alt="Univer SDK" width="800" />
|
||||
|
||||
**A full-stack, isomorphic office SDK for building spreadsheets, documents, and presentations.**
|
||||
|
||||
Build embeddable productivity experiences with a plugin architecture, Canvas-based rendering,
|
||||
a formula engine, and one Facade API that works in the browser and on Node.js.
|
||||
|
||||
English | [简体中文](./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)
|
||||
|
||||
[📖 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)
|
||||
|
||||
[](https://github.com/dream-num/univer/releases)
|
||||
[](./LICENSE)
|
||||
[](https://github.com/dream-num/univer/actions/workflows/build-packages.yml)
|
||||
[](https://www.codefactor.io/repository/github/dream-num/univer/overview/dev)
|
||||
[](https://codecov.io/gh/dream-num/univer)
|
||||
|
||||
[](https://github.com/dream-num/univer/stargazers)
|
||||
[](https://github.com/dream-num/univer/graphs/contributors)
|
||||
[](https://github.com/dream-num/univer/issues)
|
||||
[](https://github.com/dream-num/univer/commits/dev/)
|
||||
|
||||
[](https://discord.gg/z3NKNT6D2f)
|
||||
[](https://twitter.com/univerhq)
|
||||
[](https://opencollective.com/univer)
|
||||
|
||||
[](https://trendshift.io/repositories/4376)
|
||||
|
||||
</div>
|
||||
|
||||
## ✨ What is Univer?
|
||||
|
||||
Univer 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.
|
||||
|
||||
Use Univer when you need to:
|
||||
|
||||
- Embed spreadsheet or document editing into a SaaS product, internal tool, BI workflow, or AI application.
|
||||
- Run workbook/document processing on the server with the same architecture used in the browser.
|
||||
- Compose only the features you need through plugins or start quickly with presets.
|
||||
- Extend behavior through custom plugins, commands, services, UI components, and Facade APIs.
|
||||
|
||||
Univer is not a spreadsheet file viewer only. It is a framework for building your own productivity surface.
|
||||
|
||||
## 🌟 Highlights
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td align="center" width="33%">
|
||||
⚡<br />
|
||||
<strong>Built for large surfaces</strong><br />
|
||||
<sub>Canvas-based rendering and a dedicated formula engine keep complex workbooks responsive.</sub>
|
||||
</td>
|
||||
<td align="center" width="33%">
|
||||
🧩<br />
|
||||
<strong>Plugin-shaped by default</strong><br />
|
||||
<sub>Compose, replace, lazy-load, or extend capabilities without taking the whole stack.</sub>
|
||||
</td>
|
||||
<td align="center" width="33%">
|
||||
🤖<br />
|
||||
<strong>Headless for AI infrastructure</strong><br />
|
||||
<sub>Run workbook and document logic in Node.js to power agents, automation, and server-side workflows.</sub>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" width="33%">
|
||||
🛠️<br />
|
||||
<strong>Product-ready SDK</strong><br />
|
||||
<sub>Framework adapters, Facade APIs, presets, and headless runtime fit real integration paths.</sub>
|
||||
</td>
|
||||
<td align="center" width="33%">
|
||||
🌗<br />
|
||||
<strong>Dark-mode ready</strong><br />
|
||||
<sub>UI components and the rendering engine both adapt to light and dark themes.</sub>
|
||||
</td>
|
||||
<td align="center" width="33%">
|
||||
🔌<br />
|
||||
<strong>Unified Facade API</strong><br />
|
||||
<sub>One consistent API surface for workbooks, ranges, formulas, and documents across browser and Node.js.</sub>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
## 🚀 Why Univer?
|
||||
|
||||
- **Isomorphic by design**: run UI apps in browsers and headless processing in Node.js.
|
||||
- **Plugin-first architecture**: every capability is delivered as a composable plugin, so features can be added, removed, replaced, or lazy-loaded.
|
||||
- **Preset mode for fast integration**: use the curated plugin collections in [`presets/`](./presets) when you want a working app quickly.
|
||||
- **Plugin mode for full control**: manually compose packages when you need custom loading, smaller bundles, or deep integration.
|
||||
- **Facade API**: work with workbooks, worksheets, ranges, documents, formulas, commands, and events through a higher-level API.
|
||||
- **Canvas rendering engine**: support large editable document surfaces with a rendering layer shared across document types.
|
||||
- **Extensible UI**: integrate with React, Vue, Web Components, and framework-specific application shells.
|
||||
|
||||
## ⚡ Quick Start
|
||||
|
||||
Use **Plugin Mode** for complete product coverage and precise composition. For supported Sheets, Docs, and Node profiles, **Preset Mode** provides a shorter curated setup.
|
||||
|
||||
<details open>
|
||||
<summary><strong>Plugin Mode</strong></summary>
|
||||
|
||||
Plugin Mode gives you lower-level control over packages, style imports, locale merging, Facade API registration, and plugin configuration.
|
||||
|
||||
```bash
|
||||
pnpm add @univerjs/core @univerjs/design @univerjs/docs @univerjs/docs-ui @univerjs/engine-formula @univerjs/engine-render @univerjs/sheets @univerjs/sheets-formula @univerjs/sheets-formula-ui @univerjs/sheets-numfmt @univerjs/sheets-numfmt-ui @univerjs/sheets-ui @univerjs/ui
|
||||
```
|
||||
|
||||
```ts
|
||||
import { LocaleType, mergeLocales, Univer } from '@univerjs/core'
|
||||
import { FUniver } from '@univerjs/core/facade'
|
||||
import DesignEnUS from '@univerjs/design/locale/en-US'
|
||||
import { UniverDocsPlugin } from '@univerjs/docs'
|
||||
import { UniverDocsUIPlugin } from '@univerjs/docs-ui'
|
||||
import DocsUIEnUS from '@univerjs/docs-ui/locale/en-US'
|
||||
import { UniverFormulaEnginePlugin } from '@univerjs/engine-formula'
|
||||
import { UniverRenderEnginePlugin } from '@univerjs/engine-render'
|
||||
import { UniverSheetsPlugin } from '@univerjs/sheets'
|
||||
import SheetsEnUS from '@univerjs/sheets/locale/en-US'
|
||||
import { UniverSheetsFormulaPlugin } from '@univerjs/sheets-formula'
|
||||
import SheetsFormulaEnUS from '@univerjs/sheets-formula/locale/en-US'
|
||||
import { UniverSheetsFormulaUIPlugin } from '@univerjs/sheets-formula-ui'
|
||||
import SheetsFormulaUIEnUS from '@univerjs/sheets-formula-ui/locale/en-US'
|
||||
import { UniverSheetsNumfmtPlugin } from '@univerjs/sheets-numfmt'
|
||||
import { UniverSheetsNumfmtUIPlugin } from '@univerjs/sheets-numfmt-ui'
|
||||
import SheetsNumfmtUIEnUS from '@univerjs/sheets-numfmt-ui/locale/en-US'
|
||||
import { UniverSheetsUIPlugin } from '@univerjs/sheets-ui'
|
||||
import SheetsUIEnUS from '@univerjs/sheets-ui/locale/en-US'
|
||||
import { UniverUIPlugin } from '@univerjs/ui'
|
||||
import UIEnUS from '@univerjs/ui/locale/en-US'
|
||||
|
||||
import '@univerjs/design/lib/index.css'
|
||||
import '@univerjs/ui/lib/index.css'
|
||||
import '@univerjs/docs-ui/lib/index.css'
|
||||
import '@univerjs/sheets-ui/lib/index.css'
|
||||
import '@univerjs/sheets-formula-ui/lib/index.css'
|
||||
import '@univerjs/sheets-numfmt-ui/lib/index.css'
|
||||
|
||||
import '@univerjs/engine-formula/facade'
|
||||
import '@univerjs/ui/facade'
|
||||
import '@univerjs/sheets/facade'
|
||||
import '@univerjs/sheets-ui/facade'
|
||||
import '@univerjs/sheets-formula/facade'
|
||||
import '@univerjs/sheets-numfmt/facade'
|
||||
|
||||
const univer = new Univer({
|
||||
locale: LocaleType.EN_US,
|
||||
locales: {
|
||||
[LocaleType.EN_US]: mergeLocales(
|
||||
DesignEnUS,
|
||||
UIEnUS,
|
||||
DocsUIEnUS,
|
||||
SheetsEnUS,
|
||||
SheetsUIEnUS,
|
||||
SheetsFormulaEnUS,
|
||||
SheetsFormulaUIEnUS,
|
||||
SheetsNumfmtUIEnUS,
|
||||
),
|
||||
},
|
||||
})
|
||||
|
||||
univer.registerPlugin(UniverRenderEnginePlugin)
|
||||
univer.registerPlugin(UniverFormulaEnginePlugin)
|
||||
univer.registerPlugin(UniverUIPlugin, { container: 'app' })
|
||||
univer.registerPlugin(UniverDocsPlugin)
|
||||
univer.registerPlugin(UniverDocsUIPlugin)
|
||||
univer.registerPlugin(UniverSheetsPlugin)
|
||||
univer.registerPlugin(UniverSheetsUIPlugin)
|
||||
univer.registerPlugin(UniverSheetsFormulaPlugin)
|
||||
univer.registerPlugin(UniverSheetsFormulaUIPlugin)
|
||||
univer.registerPlugin(UniverSheetsNumfmtPlugin)
|
||||
univer.registerPlugin(UniverSheetsNumfmtUIPlugin)
|
||||
|
||||
const univerAPI = FUniver.newAPI(univer)
|
||||
univerAPI.createWorkbook({})
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><strong>Preset Mode</strong></summary>
|
||||
|
||||
Presets are curated collections of Univer plugins that include the required Facade API registrations and styles.
|
||||
|
||||
```bash
|
||||
pnpm add @univerjs/presets @univerjs/preset-sheets-core
|
||||
```
|
||||
|
||||
```ts
|
||||
import { UniverSheetsCorePreset } from '@univerjs/preset-sheets-core'
|
||||
import UniverPresetSheetsCoreEnUS from '@univerjs/preset-sheets-core/locales/en-US'
|
||||
import { createUniver, LocaleType, mergeLocales } from '@univerjs/presets'
|
||||
|
||||
import '@univerjs/preset-sheets-core/lib/index.css'
|
||||
|
||||
const { univerAPI } = createUniver({
|
||||
locale: LocaleType.EN_US,
|
||||
locales: {
|
||||
[LocaleType.EN_US]: mergeLocales(UniverPresetSheetsCoreEnUS),
|
||||
},
|
||||
presets: [
|
||||
UniverSheetsCorePreset({
|
||||
container: 'app',
|
||||
}),
|
||||
],
|
||||
})
|
||||
|
||||
univerAPI.createWorkbook({})
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
Your page needs a container:
|
||||
|
||||
```html
|
||||
<div id="app" style="height: 100vh"></div>
|
||||
```
|
||||
|
||||
Learn more in the [Installation & Basic Usage guide](https://docs.univer.ai/guides/sheets/getting-started/installation), the [`createUniver` reference](https://docs.univer.ai/reference/methods/create-univer), and the [Facade API reference](https://docs.univer.ai/reference/classes/univer).
|
||||
|
||||
## 🧩 Preset Mode vs Plugin Mode
|
||||
|
||||
| Choose | When to use it | Start here |
|
||||
| --- | --- | --- |
|
||||
| **Plugin Mode** | You need strict control over packages, configured dependencies, lazy loading, or custom runtime composition. | This repository's [`examples/`](./examples) and [architecture guide](https://docs.univer.ai/guides/recipes/architecture/univer) |
|
||||
| **Preset Mode** | You want a working Sheets, Docs, or Node setup with minimal configuration. | This repository's [`presets/`](./presets) and the [getting started guide](https://docs.univer.ai/guides/sheets/getting-started/installation) |
|
||||
| **Headless Mode** | You need server-side workbook/document processing, formula calculation, or automation without UI. | [Headless Univer](https://docs.univer.ai/guides/sheets/getting-started/node) |
|
||||
|
||||
Keep the `@univerjs/*` SDK packages in the same coordinated Univer release line on the same version. Independently released packages, including `@univerjs/icons` and `@univerjs/icons-svg`, use the compatible versions declared by package manifests instead of the SDK version. If you use Univer Pro packages, keep `@univerjs-pro/*` aligned with the matching coordinated release line.
|
||||
|
||||
For API compatibility expectations, experimental APIs, internal APIs, and deprecation rules, see the [API Stability Policy](./docs/API_STABILITY.md).
|
||||
|
||||
## 🧭 Compatibility
|
||||
|
||||
- **Browser runtime**: Univer is compiled with a Chrome 88 target and aims to work on Edge `>=88`, Firefox `>=90`, Chrome `>=88`, Safari `>=14.1`, and Electron `>=12`.
|
||||
- **Polyfills**: Univer relies on `Intl.Segmenter`. Add a polyfill such as `@formatjs/intl-segmenter` if your target browser or runtime does not provide it.
|
||||
- **Build tools**: We recommend Vite, esbuild, or Webpack 5. If your build tool does not support the `exports` field in `package.json` (common in Webpack 4), you may need extra path mapping.
|
||||
- **React**: Univer's view layer is built on React 18, supports React 18 and 19, and provides minimal compatibility support for React 16.9+ and 17.
|
||||
- **Node.js runtime**: Headless Univer supports Node.js `>=18.17.0`. Developing this monorepo requires Node.js `>=22.18`.
|
||||
|
||||
## 🛠️ What You Can Build
|
||||
|
||||
| Area | Open-source capabilities | Univer Pro extensions |
|
||||
| --- | --- | --- |
|
||||
| **Sheets** | Workbooks, worksheets, ranges, selection, formulas, number formatting, filtering, sorting, data validation, conditional formatting, hyperlinks, comments, find and replace, notes, tables, drawing integration, and extensible UI plugins. | Real-time collaboration, edit history, import/export, printing, charts, pivot tables, sparklines, outlines, shapes, in-cell graphics, data connectors, server-side calculation, and performance-enhanced formula features. |
|
||||
| **Docs** | Rich document model, editing UI, lists, hyperlinks, drawing integration, comments, quick insert, and shared document architecture. | Collaboration, import/export, printing, enhanced tables and lists, columns, callouts, code blocks, quotes, shapes, and remote comment resources. |
|
||||
| **Slides** | Presentation data model and UI packages under active development. | Pro slide model and UI, slide import/export, chart and table model/UI plugins, and shared shape-editing infrastructure. |
|
||||
| **Bases** | Build custom structured-data experiences on top of Univer's plugin, command, and model architecture. | Base database model, commands, formula integration, workbench UI, field editors, and render-engine views. |
|
||||
| **Runtime** | Browser apps, Node.js headless usage, Web Worker/RPC patterns, multi-instance usage, and server-oriented automation. | Collaboration client/server packages, Node.js collaboration client, Pro server services, SSR, computing delegation, server-side calculation, and changeset replay tooling. |
|
||||
| **Integrations** | React, Vue, Web Components, framework templates, theming, localization, and custom plugins. | Pro presets and enterprise deployment packages. |
|
||||
|
||||
Sheets are the most mature product surface today. Docs and Slides share Univer's architecture and continue to evolve in the same SDK.
|
||||
|
||||
## 🔓 Open Source and Pro
|
||||
|
||||
This repository contains Univer's open-source core and first-party OSS plugins. Univer Pro is developed separately as a commercial extension layer for advanced product surfaces, collaboration, server features, and enterprise integrations.
|
||||
|
||||
| Category | Open source | Univer Pro / commercial |
|
||||
| --- | --- | --- |
|
||||
| **Foundation** | Core SDK, plugin system, rendering engine, formula engine, Facade API, themes, i18n, and framework adapters. | Pro presets and enterprise deployment packages. |
|
||||
| **Sheets** | Core spreadsheet editing, formulas, number formatting, filter/sort, data validation, conditional formatting, notes, tables, hyperlinks, comments, drawing, find and replace. | Collaboration, edit history, import/export, print, charts, pivot tables, sparklines, outlines, shapes, in-cell graphics, data connectors, range preprocessing, and enhanced formula engine features. |
|
||||
| **Docs** | Document model and editor UI, lists, hyperlinks, comments, quick insert, and drawing integration. | Collaboration, import/export, print, enhanced tables/lists, columns, callouts, code blocks, quotes, shapes, and remote thread-comment resources. |
|
||||
| **Slides** | OSS presentation model and UI packages. | Pro slide model/UI packages, slide import/export, charts, tables, and reusable shape editor UI. |
|
||||
| **Bases** | Extensible plugin architecture for custom data-centric products. | Base database core model, commands, mutations, formula integration, workbench UI, field editors, and render-engine integration. |
|
||||
| **Server and runtime** | Node.js headless runtime, RPC/Web Worker patterns, and server-oriented automation primitives. | Collaboration server, Node.js collaboration client, SSR services, computing delegation, server-side calculation, and collaboration changeset replay tooling. |
|
||||
|
||||
Pro features are documented in the [Univer Pro guide](https://docs.univer.ai/guides/pro). They are intentionally separated here so the OSS package surface is clear.
|
||||
|
||||
Boundary principles:
|
||||
|
||||
- OSS packages in this repository are intended to be useful on their own under the Apache-2.0 license. Univer Pro is optional and is not required to use the public OSS SDK APIs.
|
||||
- Bugs, regressions, and security issues in OSS packages should be reported and fixed in the OSS repository, even when a related Pro feature exists.
|
||||
- OSS documentation should not imply that Pro-only capabilities are available in public `@univerjs/*` packages. Pro-only APIs, packages, and deployment paths should be named explicitly.
|
||||
- When an OSS feature has a Pro enhancement, the OSS behavior should remain documented independently so users can evaluate the open-source surface without reading commercial docs first.
|
||||
|
||||
## 🌐 Ecosystem
|
||||
|
||||
- **Core SDK**: [`dream-num/univer`](https://github.com/dream-num/univer), this monorepo.
|
||||
- **Presets**: this repository's [`presets/`](./presets), curated plugin collections for browser and Node.js apps.
|
||||
- **AI agent skills**: [`dream-num/univer-sdk-skills`](https://github.com/dream-num/univer-sdk-skills), reusable instructions for AI agents working with Univer integration, Pro features, plugin development, and Node backends. See the [AI Skills guide](https://docs.univer.ai/guides/skills).
|
||||
- **Documentation**: [docs.univer.ai](https://docs.univer.ai), including Sheets, Docs, Slides, recipes, and Pro guides.
|
||||
- **API Reference**: [docs.univer.ai/reference](https://docs.univer.ai/reference/classes/univer), the Facade API and generated API reference.
|
||||
- **Examples and showcase**: [Univer Showcase](https://docs.univer.ai/showcase) and this repository's [`examples/`](./examples).
|
||||
- **AI-native spreadsheets**: [`dream-num/univer-mcp`](https://github.com/dream-num/univer-mcp), Univer Platform / MCP integration for driving Univer Sheets with natural language.
|
||||
|
||||
## 📦 Repository Guide
|
||||
|
||||
```text
|
||||
.
|
||||
├── packages/ Core packages, engines, document types, UI plugins, and feature plugins
|
||||
├── examples/ All-in-one Vite workbench used for local browser development
|
||||
├── common/ Shared internal tooling, storybook, and utilities
|
||||
├── tests/ Additional integration test projects
|
||||
└── docs/ Architecture notes, images, and repository-local documentation
|
||||
```
|
||||
|
||||
Package-level READMEs live beside each package under [`packages/`](./packages).
|
||||
|
||||
## 🧑💻 Development
|
||||
|
||||
Requirements:
|
||||
|
||||
- Node.js `>=22.18`
|
||||
- pnpm `>=11`
|
||||
|
||||
```bash
|
||||
git clone https://github.com/dream-num/univer.git
|
||||
cd univer
|
||||
pnpm install
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
Useful commands:
|
||||
|
||||
| Command | Purpose |
|
||||
| --- | --- |
|
||||
| `pnpm dev` | Start the all-in-one Sheets, Docs, and Slides workbench with Vite 8 Bundled Dev and HMR. |
|
||||
| `pnpm build` | Build workspace packages, excluding internal common packages. |
|
||||
| `pnpm test` | Run unit tests through Turbo. |
|
||||
| `pnpm typecheck` | Run TypeScript checks through Turbo. |
|
||||
| `pnpm lint` | Run ESLint. |
|
||||
| `pnpm storybook:dev` | Start Storybook for UI component development. |
|
||||
|
||||
Read [CONTRIBUTING.md](./CONTRIBUTING.md) before opening a pull request.
|
||||
|
||||
## 📝 Contributor Notes
|
||||
|
||||
Repository-local notes worth reading before deeper changes:
|
||||
|
||||
- [Building Isomorphic Univer](./docs/ISOMORPHIC.md): how to split browser, Node.js, UI, and shared plugin logic.
|
||||
- [API Stability Policy](./docs/API_STABILITY.md): stable, experimental, internal, deprecated, and breaking-change expectations.
|
||||
- [Contributing to Facade API](./docs/CONTRIBUTING-FACADE.md): API design expectations for `FUniver`, `FWorkbook`, `FRange`, and related Facade classes.
|
||||
- [Naming Convention](./docs/NAMING_CONVENTION.md): file, folder, interface, plugin, command, and dependency injection token conventions.
|
||||
- [Fixing Memory Leaks](./docs/FIX_MEMORY_LEAK.md): common leak patterns and debugging workflow for Univer instances.
|
||||
- [Architecture TLDRs](./docs/tldr): concise notes for formula engine, web worker, permission, selection, and ref-range behavior.
|
||||
|
||||
## 💬 Community
|
||||
|
||||
- Ask questions in [GitHub Discussions](https://github.com/dream-num/univer/discussions).
|
||||
- Chat with the community on [Discord](https://discord.gg/z3NKNT6D2f).
|
||||
- Follow [Twitter / X](https://twitter.com/univerhq) and [YouTube](https://www.youtube.com/@dreamNum).
|
||||
|
||||
Please read the [Code of Conduct](./CODE_OF_CONDUCT.md) before participating.
|
||||
|
||||
## 🔒 Security
|
||||
|
||||
If you believe you have found a security issue, please follow the [Security Policy](./SECURITY.md).
|
||||
|
||||
## ❤️ Sponsors
|
||||
|
||||
Univer is supported by the community and sponsors. You can support the project through [Open Collective](https://opencollective.com/univer).
|
||||
|
||||
<a href="https://opencollective.com/univer/sponsor/0/website"><img src="https://opencollective.com/univer/sponsor/0/avatar.svg" alt="Sponsor 0" /></a>
|
||||
<a href="https://opencollective.com/univer/sponsor/1/website"><img src="https://opencollective.com/univer/sponsor/1/avatar.svg" alt="Sponsor 1" /></a>
|
||||
<a href="https://opencollective.com/univer/sponsor/2/website"><img src="https://opencollective.com/univer/sponsor/2/avatar.svg" alt="Sponsor 2" /></a>
|
||||
<a href="https://opencollective.com/univer/sponsor/3/website"><img src="https://opencollective.com/univer/sponsor/3/avatar.svg" alt="Sponsor 3" /></a>
|
||||
<a href="https://opencollective.com/univer/sponsor/4/website"><img src="https://opencollective.com/univer/sponsor/4/avatar.svg" alt="Sponsor 4" /></a>
|
||||
<a href="https://opencollective.com/univer/sponsor/5/website"><img src="https://opencollective.com/univer/sponsor/5/avatar.svg" alt="Sponsor 5" /></a>
|
||||
<a href="https://opencollective.com/univer/sponsor/6/website"><img src="https://opencollective.com/univer/sponsor/6/avatar.svg" alt="Sponsor 6" /></a>
|
||||
|
||||
<a href="https://opencollective.com/univer/backer/0/website"><img src="https://opencollective.com/univer/backer/0/avatar.svg" alt="Backer 0" /></a>
|
||||
<a href="https://opencollective.com/univer/backer/1/website"><img src="https://opencollective.com/univer/backer/1/avatar.svg" alt="Backer 1" /></a>
|
||||
<a href="https://opencollective.com/univer/backer/2/website"><img src="https://opencollective.com/univer/backer/2/avatar.svg" alt="Backer 2" /></a>
|
||||
<a href="https://opencollective.com/univer/backer/3/website"><img src="https://opencollective.com/univer/backer/3/avatar.svg" alt="Backer 3" /></a>
|
||||
<a href="https://opencollective.com/univer/backer/4/website"><img src="https://opencollective.com/univer/backer/4/avatar.svg" alt="Backer 4" /></a>
|
||||
<a href="https://opencollective.com/univer/backer/5/website"><img src="https://opencollective.com/univer/backer/5/avatar.svg" alt="Backer 5" /></a>
|
||||
<a href="https://opencollective.com/univer/backer/6/website"><img src="https://opencollective.com/univer/backer/6/avatar.svg" alt="Backer 6" /></a>
|
||||
|
||||
## 📄 License
|
||||
|
||||
Copyright (c) 2021-present DreamNum Co., Ltd.
|
||||
|
||||
Licensed under the [Apache-2.0](./LICENSE) license.
|
||||
Reference in New Issue
Block a user