前端开源项目 [Simple Sheet] - V2EX
请不要在回答技术问题时复制粘贴 AI 生成的内容
lvming6816077

前端开源项目 [Simple Sheet]

  •  1
     
  •   lvming6816077 Jul 13, 2022 3959 views
    This topic created in 1416 days ago, the information mentioned may be changed or developed.

    [ Simple Sheet ] 一款高性能的在线表格 EXCEL 文档系统。

    技术栈:

    React.js+Mobx+TypeScript

    功能和特性:

    • 高性能(使用 canvas 进行渲染)
    • 可定制化
    • 支持行、列宽度高度、自动筛选视图、单元格样式和格式设置等
    • 计算公式

    demo: https://www.nihaoshijie.com.cn/mypro/simple-sheet/index.html

    Github: https://github.com/lvming6816077/simple-sheet

    相关功能还在持续开发中,感兴趣的同学可以参与一起开发维护!

    19 replies    2022-08-18 11:43:04 +08:00
    musi
        1
    musi  
       Jul 13, 2022
    demo 里还不支持鼠标滚动
    stefanieewu
        2
    stefanieewu  
       Jul 13, 2022
    不支持滚动多选
    FakerLeung
        3
    FakerLeung  
       Jul 13, 2022
    属于无法正常使用的程度:
    1. B 列完全无法选中单元格,一点击就是直接全选整列。
    2. 点 C4 ,D6 高亮并编辑?
    3. 拖动 2 列( DE ),却跨了 3 列( DEF )。

    cmd+w 了。。。
    lvming6816077
        4
    lvming6816077  
    OP
       Jul 13, 2022
    @FakerLeung 老哥 你描述的问题 我咋不能复现呢 是用的 Chrome 嘛
    lvming6816077
        5
    lvming6816077  
    OP
       Jul 13, 2022
    @stefanieewu 还在开发中
    @musi
    FakerLeung
        6
    FakerLeung  
       Jul 13, 2022
    @lvming6816077 #4
    Brave 偶现,要在页面滚动一下,然后滚动表格的滚动条,就容易复现了。
    ericgui
        7
    ericgui  
       Jul 13, 2022
    你创建一个 github org 吧,比如 github.com/simple-sheet

    邀请想参与的人进去一起写代码

    不然就算参与进去了,也不好把你死人的 repo 放在自己简历里
    ericgui
        8
    ericgui  
       Jul 13, 2022
    *私人, 写错字了不好意思
    lvming6816077
        9
    lvming6816077  
    OP
       Jul 13, 2022
    @ericgui get!
    antowa
        10
    antowa  
       Jul 13, 2022
    怎么参与共同开发?想加入
    cjh1095358798
        11
    cjh1095358798  
       Jul 13, 2022
    这是个什么类型项目,私人开源 demo 吗
    passon
        12
    passon  
       Jul 13, 2022
    代码没有格式化
    lvming6816077
        13
    lvming6816077  
    OP
       Jul 13, 2022
    @cjh1095358798 目前我自己在开发,创建了一个组织 simple-sheet
    laolaowang
        14
    laolaowang  
       Jul 13, 2022
    加油,口头支持一波
    Exuanbo
        15
    Exuanbo  
       Jul 14, 2022
    随便点开几个 component 看了看, 全是 `props: any` …
    lvming6816077
        16
    lvming6816077  
    OP
       Jul 14, 2022
    @Exuanbo 代码还没有优化完,后续会持续优化
    bsg1992
        17
    bsg1992  
       Jul 17, 2022
    Safari 浏览器 合拼没有内容的单元格后 无法进行输入
    Victor69
        18
    Victor69  
       Aug 18, 2022 via iPhone
    api 设计有点问题,一边说高性能,一边整个组件直接丢个 data array 就渲染,还不如上个虚拟容器简单。
    而且 canvas 对 sheet**本身**的性能影响不大,而是针对不同浏览器之间排版引擎(对齐、字体显示等)的性能问题。看了看 example 你这个只支持 chrome ,那 canvas 其实毫无优势,徒增开发难度,不如套个 tanstack/table + 虚拟滚动

    而且个人认为设计一个新的 sheet 组件,从产品上基本的亮点应该是多人协作( yjs )和支持连接 database (例: https://baserow.io/)。如果这些都没有直接还不如打开 office 365 ,或者 Google sheet 。

    另外,如果从一款好用的开源 excel component 考虑,从设计角度上应该最外层有一层 data fetcher 做 lazy load (例子: https://refine.dev/)、支持自定义 cell type ( plugin system )这些应该一开始就留有余地,后面改起来的难度和重写一样;计算公式上实现起来又是一个大坑,如果要做动态计算(改一改 cell 相关的 cell 也会更新),要有一个 hypergraph (或者起码是个图),每次加函数做回路检测和 cell 更新,而且计算公式市面上产品都是非常非常基础,从 ws office 就有的那点东西,我觉得可以套一个 serverless 函数,支持 python 科学计算( google sheet 插件里面貌似有类似的功能)

    P.S. 这也是我目前在做的东西,以上为个人一点浅见
    lvming6816077
        19
    lvming6816077  
    OP
       Aug 18, 2022
    @Victor69
    高性能这个主要是利用了 React 而不是原生 JS 去实现 cell 的相关操作,这里有待商榷 React 优于原生 JS ,但是目前来说用着并不卡顿;
    理论上支持所有现代浏览器,只是目前只在 Chrome 上测试过;

    总体来说,因为本身这个项目目前只是作为一个开源项目并且只有我个人在业余时间开发,所以很多功能(实时协作,后端服务,复杂公式等等)都没有完善,也没有精力完善,其实目的是为了给一些对 web sheet 感兴趣的同学入门,当然也也可以参与开发进来。

    感谢关注和支持。
    About     Help     Advertise     Blog     API     FAQ     Solana     848 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 83ms UTC 21:21 PVG 05:21 LAX 14:21 JFK 17:21
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86