Git Product home page Git Product logo

dream-num / univer Goto Github PK

View Code? Open in Web Editor NEW
3.0K 47.0 300.0 42.2 MB

Univer is a set of enterprise document and data collaboration solutions, integrating spreadsheets, documents, and slides.

Home Page: https://univer.ai

License: Apache License 2.0

JavaScript 0.26% Shell 0.01% TypeScript 97.96% Less 1.78%
data-table excel office spreadsheet xlsx doc slide powerpoint word appscript document grid live-share ppt productivity collaboration

univer's Introduction

Univer

GitHub License GitHub Workflow Status codecov CodeFactor Discord

English | 简体中文 | 日本語

🚧 This project is still in heavy development. Please note that there are likely to be major API changes. Please submit issues and suggestions to us.

Introduction

Univer is a set of enterprise document and data collaboration solutions, integrating spreadsheets, documents, and slides.

Highlights:

  • 📈 Univer is designed to support both spreadsheets and documents. Slides will be supported as well in the future.
  • ⚙️ Univer is easily embeddable, allowing seamless integration into your applications.
  • 🎇 Univer is powerful, offering a wide range of features including formulas, conditional formatting, data validation, filtering, collaborative editing, printing, import & export and more features on the horizon.
  • 🔌 Univer is highly extensible, thanks to its plug-in architecture and Facade API that makes it a delight for developers to implement their unique requirements on the top of Univer.
  • 💄 Univer is highly customizable, allowing you to personalize its appearance using themes. It also provides support for internationalization (i18n).
  • ⚡ Univer in performant.
    • ✏️ Univer boasts an efficient rendering engine based on canvas, capable of rendering various document types flawlessly. The rendering engines supports advanced typesetting features such as punctuation squeezing, text and image layout and scroll buffering.
    • 🧮 Univer incorporates a lightning-fast formula engine that can operate in Web Workers or even on the server side.
  • 🌌 Univer is a highly integrated system. Documents, spreadsheets and slides can interoperate with each others and even rendered on the same canvas, allowing information and data flow within Univer.

Examples

📊 Univer Sheets

Sheets
Opened: cell styles, formulas. First quarter: conditional formatting, data validation, search and replace. Second quarter (tentative): floating pictures, filtering, sorting, annotations, charts, pivot tables, super tables (tables), shapes
Sheets Multi
Multiple Univer instances can be created on a page to allow interoperability between tables
Sheets Uniscript
In Univer Sheets, you can directly use JavaScript syntax to operate the data in the table to achieve automation.
Sheets Big Data
Loading 10 million cells of data, completed within 500ms
Sheets Collaboration (Pro Feature)
Please open two windows or invite friends to experience Univer Sheets collaboration together
Sheets Collaboration Playground (Pro Feature)
Demonstrate the process of collaboration. After A edits the form, how does B process it? Here is an interesting experiment
Sheets Import/Export (Pro Feature)
Supports xlsx file import and export
Sheets Print (Pro Feature)
Experience the HD printing capabilities of Univer Sheets

📝 Univer Docs

Docs
Already open: ordered and unordered lists, paragraph settings, mixed graphics and text, multi-column/single column display in sections (tentative): hyperlinks, comments, tables, charts
Docs Multi
Multiple Univer instances can be created in a page so that doc can interoperate.
Docs Uniscript
You can directly use JavaScript syntax to manipulate content in Univer Docs
Docs Big Data
1 million word Docs loading demo
Docs Collaboration (Pro Feature)
Please open two windows or invite friends to experience Univer Docs collaboration together
Docs Collaboration Playground (Pro Feature)
Demonstrate the process of collaboration. After A edits the document, how does B process it? Here is an interesting experiment

🎨 Univer Slides

Slides
A canvas presentation containing graphic text, floating pictures, tables and other elements

🧩 Univer Innovation

Zen Mode
The cell of Sheet is a Doc?
Univer (SaaS version)
With Univer, we enable users to create 3 forms of page as they wish. By merging sheet, doc and slide's capabilities together, Univer empowers individuals and teams to create, organize and streamline workflows effortlessly.

Usage

We recommend to import Univer as a npm package. Please checkout the Quick Start section on the documentation website. We also have an online playground which can help you preview Univer without setting up the development environment.

Univer bases on a plugin architecture. You can install the following packages to enhance the functionality of Univer.

Packages

Name Description Version
core Implements plugin system and architecture of Univer. It also provides basic services and models of different types of documents. npm version
data-validation Implements data validation features in Univer. npm version
design Implements the design system on Univer. It provides CSS and a component kit based on React. npm version
docs Implements basic logics of rich text editing features. It also facilitates text editing in other types of documents. npm version
docs-ui Provides user interface of Univer Documents npm version
engine-formula It implements a rendering engine based on Canvas and is extensible for npm version
engine-numfmt It implements a number format engine. npm version
engine-render It implements a rendering engine based on canvas context2d. npm version
facade It serves as an API layer to make it easier to use Univer npm version
find-replace It implements find and replace features in Univer. npm version
network It implements network services based on WebSocket and HTTP. npm version
rpc It implements a RPC mechanism and methods to sync data between different replicas of Univer documents. npm version
sheets Basic logics of spreadsheet features. npm version
sheets-conditional-formatting It implements conditional formatting in Univer Spreadsheets. npm version
sheets-conditional-formatting-ui It implements conditional formatting in Univer Spreadsheets. npm version
sheets-data-validation It implements data validation in Univer Spreadsheets. npm version
sheets-find-replace It implements find and replace features in Univer Spreadsheets. npm version
sheets-formula It implements formula in spreadsheets. npm version
sheets-numfmt It implements number format in spreadsheets. npm version
sheets-zen-editor It implements Zen editing mode in spreadsheets. npm version
sheets-ui Provides user interface of Univer Spreadsheets npm version
ui Implements basic user interactions with Univer and workbench layout based on React. npm version
uniscript (experimental) Implements a DSL based on Typescript that empowers users to accomplish more sophisticated tasks npm version

Contribution

We appreciate any kinds of contributing. You can submit issues or feature requests to us. Please read our contributing guide first.

If you would like to contribute code to Univer, please refer to the contributing guide as well. It would guide you through the process of setting up the development environment and submitting a pull request.

Sponsors

The growth and development of the Univer project rely on the support of its backers and sponsors. If you are interested in supporting our project, we kindly invite you to consider becoming a sponsor. You can sponsor us through Open Collective.

Thanks to our sponsors, just part of them are listed here because of the space limit, ranking is no particular order:

Stargazers

Stargazers repo roster for @dream-num/univer

Links

Community

License

Univer is distributed under the terms of the Apache-2.0 license.


Copyright © 2019-2024 Shanghai DreamNum Technology Co., Ltd. All rights reserved

univer's People

Contributors

actions-user avatar dr-univer avatar dushusir avatar eltociear avatar enochgao avatar fmwww avatar gggpound avatar gingerhot avatar gityoog avatar hexf00 avatar howtopick avatar jackpk235 avatar jerry-tanghao avatar jikkai avatar jocs avatar karlsbeard avatar kovsu avatar ljcoder2015 avatar mcdonald755 avatar weird94 avatar wzhudev avatar yangfong avatar yangluoshen avatar ybzky avatar yuhongz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

univer's Issues

建议

请问作者 这个现在怎么使用呢,需要下载源码后自己打包,和luckysheet一样?

[Feature Request] import & export

Initial checklist

  • Is this really a problem?
  • I have searched the Github Issues for similar issues, but did not find anything.

Problem

How do I export or save it?

Solution

I can't find the exported code

Alternatives

no

[bug]运行npm run dev:sheet报错

运行npm run dev:sheet报错Uncaught SyntaxError: The requested module '/@fs/F:/univer/packages/core/src/DI/Decorators.ts?t=1689907140611' does not provide an export named 'AsyncDependencyItem'

Redesign UI system

Menu Registry

UI Library @jikkai

  • Remove abstract Component and PureComponent
  • Remove Preact and only React, remove abstracting layer at packages/base-ui/src/Framework/Preact.tsx
  • Adopt React Hooks Components

UI Parts

  • ToolbarService unnecessary
  • ContextMenuService unnecessary
  • (optional) FooterService @jikkai
  • (optional) PanelService @jikkai
  • (optional) CanvasPopoverService
  • ShortcutService @wzhudev

Components

Editor (for both doc & sheet)

Features

Architecture

  • Migrate on IShortcutService @wzhudev
    • Implement IFocusService
    • Shortcut should check if it should be triggered before gets triggered
  • (later) Migrate on IClipboardService @wzhudev

什么时候有最新的发行版

用了lucksheet2.0感觉功能很好,就是没有导出,用了别人的导出的方法都不太好。在这里蹲一个最新的包

作为普通开发人员,最需要的在线预览Word和Excel

Univer很惊艳,能把Office三大利器制作成在线编辑这个难度极高。
但是,我们目前遇到的最大问题其实是:在线预览Word和Excel

这个需求极大,或者说这个是刚需,至于在线编辑Word和Excel,反而并不那么大。
因为,更多用户还是喜欢用Office软件本地编辑。

所以,希望能最先开发这个功能:在线预览Word和Excel。

(1)比如 https://officeweb365.com?src=Word_Online_URL
(2)微软的 https://view.officeapps.live.com/op/view.aspx?src=URL
(3)葡萄城的开发组件 https://www.grapecity.com.cn/
都是通过云服务收费,提供在线预览。

你这个如果做成这种最好,通过URL传递远程word或者exel, 然后在线预览。
https://dream-num.github.io/doc?url=http://xx.com/test.docx
https://dream-num.github.io/xls?url=http://xx.com/test.xls

无法导入大数据

  1. 无法导入大数据,简直就是个笑话
    2.你这开发的,连个demo都不算,怎么通过评审的

Toolchain: CI / monorepo managing tools / Git hooks etc.

  • Adopt a monorepo managing tool (lerna / turbopack / rush)
    • Make sure building toolchain works
    • Incremental building & testing on CI
  • Commit lint
    • Enforce Angular commit style
    • Eslint
  • Migrate CI from CircleCI to GitHub Actions
  • CI
    • Build
    • ESLint
    • Type checks
  • Support package.json exports in plugins
  • Preview link for each PR
  • Provide a vscode task to launch debug windows
  • Adopt typedoc to generate API website (maybe later)
  • Migrate test framework to vitest

Migrate doc to new architecture and use as sheet's cell editor

  • Migrate doc commands & shortcuts to new architecture
  • Remove legacy CommandManager
  • Move UI framework to base-ui
    • Toolbar
    • Context menu
    • Slots for business to add their own components (later)
  • Embed doc as sheet's cell editor (maybe fx editor in the near future)
  • Support running multi-instances of different business type in underlying services (shortcut, menu)
    • IContextService
    • IUndoredoService
    • IShortcutService
    • IMenuService (later)

Formula engine basics

  • integrate to SheetInterceptorService ViewModel
  • integrate to CellEditorService
  • #293 @wzhudev
  • formula-input
    • Temporary style design (supports in-memory text highlighting: formulas, syntax coloring).
    • Formula-selection
    • Shotcut
    • Cross-sheet selection.
  • formula engine
    • Integrate into the DI system.
    • Successfully compiled the let and reduce functions.
    • Integrated with view model
  • sheets-plugin-formula UI @Dushusir
    • Formula real-time search list
    • Formula details pop-up windows data structure
    • Formula details pop-up window UI
    • toolbar formula menu button and dropdown
    • More Functions dialog
    • toolbar formula tab
    • error tootip @Dushusir basic component+cell notification service
    • integrated with worker.
    • Integrated with refservice.
    • The formula supports offset referencing in dropdown filling and copy scenarios. @Dushusir

Selection features

  • Row & col selections @DR-Univer
  • Change selections with pointer @DR-Univer
  • Change selections with keyboard @wzhudev
    • Simple movement with keyboard
    • Move to the next cell that has value
    • Shift-key moving
    • Ctrl-A
    • Tests

[Bug] pnpm run dev:sheet 运行无法编辑

初始清单

  • 这真的是个问题吗?
  • 我已经在 Github Issues 中搜索过了,但没有找到类似的问题。

受影响的包和版本

dev分支

复现步骤

git clone https://github.com/dream-num/univer.git 
pnpm i
pnpm run dev:sheet

预期行为

可展示、可编辑

实际行为

表格可点击,可更改样式,但不可输入内容

image

运行环境

Chrome

操作系统

macOS

构建工具

esbuild

setRangeMerge not working

I have a problem with the setRangeMerge function. When I try to use it I get the following error:

api.js:3114
Uncaught TypeError: Cannot set properties of undefined (setting '9_3')
at Object.setRangeMerge (api.js:3094:41)
at UnisciCelle (prova_LuckySheet.html:45:20)
at HTMLInputElement.onclick (prova_LuckySheet.html:21:98)

This is my code:

<script src="https://cdn.jsdelivr.net/npm/luckysheet@latest/dist/plugins/js/plugin.js"></script> <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/luckysheet.umd.js "></script>
<title>EasyGrooming</title>

    <input type='button' id='btnUnisci' value='Unisci celle' onclick='UnisciCelle()'>
    <input type='button' id='btnLeggiCella' value='Leggi cella' onclick='LeggiCella()'>
    <div id="luckysheet" style="margin:0px;padding:0px;position:absolute;width:600px;height:70%;"></div>
        
 
<script> 
    $(function () 
    {
        //Configuration item
        var options = {
            container: 'luckysheet' //luckysheet is the container id
        };
        luckysheet.create(options);
    });
    
    function UnisciCelle()
    {
        alert("Here I am!");
        luckysheet.cancelFrozen();
        luckysheet.setRangeMerge("all", "D10:E15");
    }
    function LeggiCella()
    {
        luckysheet.setRowHeight({5:50, 6:80});
        luckysheet.setCellValue(3, 4, "puppa");
        luckysheet.setCellFormat(4, 5, "bd", {borderType: "border-right",style: "1", color: "#ff0000"});
        luckysheet.setRangeShow("D10:E15");
        var sVal = luckysheet.getCellValue(0, 0);
        alert("Valore : " + sVal);
    }
    
</script>
  
</html>

Can somebody help me?
Many thanks

Design "Facade" layer

Facade expose API to SDK users and it also serves as an interpreter of AppScript.

MVP Features

To the developers who will be responsible for implementing these features, please ensure that:

  • All related commands, mutations, operations, menu items, and models are thoroughly unit tested.
  • The undo-redo functionality is working correctly and without any issues.
  • All design requirements have been met in the implementation.
  • Your pull request (PR) is reviewed by another member of the team before merging.

Milestone 1 - Basic Sheet Features

To reach this milestone, we should diligently implement essential components and fundamental features, with the aim of providing a solid foundation to support future advancements and developments.

Deadline October 21th, 2023

Milestone 2 - Features II

Milestone 3 - Advanced Features & Facade

[WIP] RFC: Univer Architecture Optimization

Focus on transforming the core. After the structure is stable, plug-ins will be involved

Architecture related tasks

  • core: Circular dependencies
    • The worksheet workbook should be split into model and api, the former only includes snapshot and get related, the latter is set modification @eiji-th
    • undo in CommandManager @eiji-th
    • Styles module changed to worksheet. When transferring, the modification of the worksheet does not depend on the workbook, and the two are decoupled @eiji-th
    • Action Apply @Dushusir
  • ui-plugin-sheets: Circular dependencies @TonyTonyChopper123
  • Using DI: sheets-plugin-numfmt @eiji-th
  • Using DI: sheets-plugin-find @TonyTonyChopper123
  • Move @wendellhu/redi into core package @wzhudev
  • Add a dependency layer in core package @wzhudev
  • Check for typos, like genname @eiji-th
  • Remove unneeded modules like Server @Dushusir
  • Interface Enum Types Const These directories are merged into the Types directory @Dushusir
  • Don't put Univer in Basics @wzhudev
  • Univer and Context are also a problem of holding each other, transform it into an injector on Univer @wzhudev
  • [Optional] Remove index.ts, remove the introduction of ./index
  • [Optional] Remove static methods and propertoes

Cell editor (doc) enhancements

  • 中文输入
  • 回车换行
  • update更新输入
  • 上下快捷键支持
  • 排版文字太紧密
  • 鼠标点击空白处体验
  • 光标体验
  • doc重构
  • editor接入sheet
  • ime input bugfix
  • show scroll bar
  • shortcut
  • 网格调试
  • indent不生效
  • 排版问题优化:中英文间隔、
  • 快捷键
  • 复制粘贴
  • 范围选择器开发及优化(抽象及开发优化选择器)
  • 导入
  • editor样式编辑重构
  • editor最后一个段落不能被删除

The bug in undo and redo function.

I found that the framework core records all user commands in the _undoStack, including non editing operations such as selecting cells.

This results in if I modify the table content and frequently switch between selected cells, and then want to undo the modified content, I will need to click the undo button multiple times.

House keeping

The last step to Univer Architecture Ready milestone is to clean up legacy code.

  • [ ] fix unit tests (we will do it layer when we implement features)
    • setup unit tests environment @jikkai
  • fix type problems & lint problems
  • remove legacy system
  • remove unused files

Basic UI components & services

Implements basic components and services to improve code reuse and provide consistent behavior across different plugins and platforms.

Deadline Oct 14, 2023

Components

  • Message
  • Button
  • Icon: integrate @univerjs/icon
  • Input @Dushusir
  • InputNumber @Dushusir
  • Container
  • Layout
  • Slider
  • Tooltip

Docs

  • Design Token / Palette
  • Deploying storybook

Services

Services should be platform-agnostic.

  • ThemeService (manages themes and dark mode)
  • IMessageService

Deadline Oct 27, 2023

Components

  • Dropdown
  • CanvasIcon: rename CanvasIcon to BorderLine
  • Menu
    • Item
    • NeoCustomLabel
    • CustomLabel: completely deprecate theCustomLabel component
    • Select
  • ColorPicker
  • ColorPickerCircleButton

Deadline Nov 4, 2023

Components

  • Tabs
  • Dialog: rename Modal to Dialog
  • Notification @Dushusir
  • Confirm

Services

  • INotificationService @Dushusir
  • IDialogService
  • IConfirmService

Deadline Nov 11, 2023

Components

  • CellRange
  • Collapse
  • Separator
  • ResizeDialog
  • SiderModal
  • Avatar
  • Checkbox
    • CheckboxGroup
  • Radio
    • RadioGroup
  • Drag
  • Slot
  • Modal

Not in plan

Components

  • DatePicker move to #378

Viewing features

  • Scrolling:
    • mouse scrolling
    • focus cell make scrolling
    • scrolling to specific position
  • Zooming:
    • mouse wheel with shortcut key
    • slider bar in sheetbar
  • Use operations to set scrolling positions and zooming scales
  • Freezing
    • context menu

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.