范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

语雀弃用SpreadJs?2023年前端表格4优秀热门方案!

  大家好,很高兴又见面了,我是" 高级前端 进阶  ",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!
  高级前端 进阶前言
  开始介绍 具体的前端表格方案之前,先说一个在线表格编辑的研发案例。
  一开始在做在线表格时,语雀团队采用的是" SpreadJs+二次开发 "的模式,后来发现功能越来越难做,维护和开发成本上升。于是,2019年5月语雀团队弃用了SpreadJs,开始自研。所以,本文也不再聚焦SpreadJs(如果有兴趣可以阅读文末资料),而是向大家介绍一些可行的前端在线表格解决方案 。
  话不多说,直接开始!Handsontable
  Handsontable 是一个 JavaScript 组件,它将数据网格功能与类似电子表格的用户体验相结合。提供数据绑定、数据验证、过滤、排序和 CRUD 操作,可以在React、Angular、Vue等前端技术栈中使用。
  数以千计的商业应用程序依靠 Handsontable 来输入、编辑、验证、清理来自远程源(例如数据库和 API)或来自 HTML 文档、Excel 文件、Google 表格和手动输入的数据。
  Handsontable数据处理流程
  Handsontable的表格解决方案有以下明显的优势:提供所有电子表格功能对开发人员友好的 API性能保证
  而且使用起来也是非常简单:import Handsontable from "handsontable"; import "handsontable/dist/handsontable.full.min.css"; // 导入Handsontable const container = document.querySelector("#example"); const hot = new Handsontable(container, {   data: [     ["", "Tesla", "Volvo", "Toyota", "Ford"],     ["2019", 10, 11, 12, 13],     ["2020", 20, 11, 14, 13],     ["2021", 30, 15, 12, 13]   ],   rowHeaders: true,   colHeaders: true,   licenseKey: "non-commercial-and-evaluation"    // 商业使用需要 });
  目前 Handsontable 在Github上有17.6k的star、2.9k的fork、超过4.7k的项目依赖它,代码贡献者人数超过100+。从NPM的使用数据来看,最近周下载量也达到了124k左右,而且基本维持稳定。ExcelJS
  ExcelJS 是一个 JavaScript 包,充当 Excel 工作簿管理器。 根据其官方文档,exceljs 可以读取、操作电子表格数据和样式并将其写入 XLSX 和 JSON。 它是从 Excel 电子表格文件作为项目进行逆向工程。
  ExcelJS具有以下能力: 创建工作簿。创建工作表。处理页眉和页脚。设置冻结或拆分视图。设置自动过滤器。对行和列的数据操作。添加数据验证。添加样式。将图像插入工作簿。
  此外,exceljs 更新及时并且完全免费,这一点和handsontable等在线表格解决方案相比确实有比较大的吸引力。
  exceljs的使用也非常简单,比如下面的例子:const ExcelJS = require("exceljs"); const workbook = new ExcelJS.Workbook(); // 创建工作簿 workbook.creator = "Me"; workbook.lastModifiedBy = "Her"; workbook.created = new Date(1985, 8, 30); workbook.modified = new Date(); workbook.lastPrinted = new Date(2016, 9, 27); // 添加工作表 const sheet = workbook.addWorksheet("My Sheet", {properties:{tabColor:{argb:"FFC0000"}}}); const sheet = workbook.addWorksheet("My Sheet", {views: [{showGridLines: false}]}); // create a sheet with the first row and column frozen const sheet = workbook.addWorksheet("My Sheet", {views:[{state: "frozen", xSplit: 1, ySplit:1}]}); // Create worksheets with headers and footers const sheet = workbook.addWorksheet("My Sheet", {   headerFooter:{firstHeader: "Hello Exceljs", firstFooter: "Hello World"} }); // create new sheet with pageSetup settings for A4 - landscape const worksheet =  workbook.addWorksheet("My Sheet", {   pageSetup:{paperSize: 9, orientation:"landscape"} });
  目前 exceljs 在Github上有10.9k的star、1.4k的fork、超过20.1k的项目依赖它,代码贡献者人数超过160+。
  从NPM的官方数据来看,ExcelJS的周下载量稳定在 612351左右,同时处于稳定的上升期。与ExcelJS的直接竞争者handsontable的周下载量124,151相比, ExcelJS的下载量也有5.6倍之多。 SheetJS
  SheetJS提供了经过大量测试的开源表格解决方案,可从几乎所有复杂的电子表格中提取有用的数据,并生成新的电子表格,这些电子表格可以与旧版和现代软件一起使用。
  SheetJS具有以下明显特性:支持大量数据类型 :SheetJS 为每种 Excel 文件格式以及 Lotus 1-2-3、Numbers 和 Quattro Pro 提供了一个统一的界面。 SheetJS 提供常见数据问题的解决方案 :通过 JavaScript 快速处理复杂数据。 SheetJS 无处不在 :Web 浏览器、服务器、桌面应用程序、移动应用程序、Salesforce 和 Photoshop 插件,甚至在 Excel 中!
  SheetJS社区版提供了与ReactJS、VueJS、Angular、Svelte、传统框架等不同的集成方案,比如下面是在ReactJS中集成SheetJS的示例:import { read, utils, writeFile } from "xlsx"; import React, { useCallback, useEffect, useState } from "react"; import { read, utils, writeFileXLSX } from "xlsx";  export default function SheetJSReactAoO() {   /* 组件状态是数组 */   const [pres, setPres] = useState([]);    /* 获取并更新状态一次*/   useEffect(() => { (async() => {     const f = await (await fetch("https://sheetjs.com/pres.xlsx")).arrayBuffer();     const wb = read(f);      // parse the array buffer     const ws = wb.Sheets[wb.SheetNames[0]];      // 获取第一个工作表     const data = utils.sheet_to_json(ws);      // 生成对象     setPres(data);      // 更新状态   })(); }, []);    /* 获取状态数据并导出到XLSX */   const exportFile = useCallback(() => {     const ws = utils.json_to_sheet(pres);     const wb = utils.book_new();     utils.book_append_sheet(wb, ws, "Data");     writeFileXLSX(wb, "SheetJSReactAoO.xlsx");   }, [pres]);    return (     { /* 为数据生成行 */       pres.map(pres => ())     }   
NameIndex
{pres.Name} {pres.Index}
); }   更多关于SheetJS的用法可以参考文末资料,这里不再具体展开。   目前 SheetJS 在Github上有32.5k的star、8k的fork、超过129k的项目依赖它,代码贡献者人数超过180+。   从NPM的官方数据来看,SheetJS的周下载量稳定在1,701,405 左右,同时处于稳定的上升期。与 SheetJS的直接竞争者handsontable的周下载量124,151相比, SheetJS的下载量是它的13.8倍之多,是ExcelJS的3倍之多 !这一点通过下面的图就很容易看出来。   SheetJS vs. handsontable vs. ExcelJS 周下载量   当然,从MINIFIED + GZIPPED后代码体积来看,handsontable(33.2k)> ExcelJS(259.1k) > SheetJS(135.5k),所以相当于SheetJS用更少的代码实现了更复杂的功能。当然,如果考虑到按需加载,这一点可能并不构成最终选择SheetJS的直接理由,大家需要视情况而定。   node-xlsx   node-xlsx是简单的 excel 文件解析器和生成器,用于Node环境,具有以下特征: 依靠 SheetJS xlsx 模块来解析/构建 excel 表格。 使用 TypeScript 构建,用于对库中导出的类型进行静态类型检查。   使用node-xlsx也是非常简单,下面示例通过node-xlsx解析一个 xlsx 文件: import xlsx from "node-xlsx"; // Or var xlsx = require("node-xlsx").default; // Parse a buffer const workSheetsFromBuffer = xlsx.parse(fs.readFileSync(`${__dirname}/myFile.xlsx`)); // 解析文件 const workSheetsFromFile = xlsx.parse(`${__dirname}/myFile.xlsx`);   下面示例使用使用node-xlsx构建一个xlsx文件:import xlsx from "node-xlsx"; // Or var xlsx = require("node-xlsx").default; const data = [ [1, 2, 3], [true, false, null, "sheetjs"], ["foo", "bar", new Date("2014-02-19T14:30Z"), "0.3"], ["baz", null, "qux"], ]; var buffer = xlsx.build([{name: "mySheetName", data: data}]); // Returns a buffer   更多node-xlsx的用法可以参考文末资料。   目前 node-xlsx 在Github上有2.6k的star、270+的fork、超过10.9k的项目依赖它,代码贡献者人数20+,是一个值得关注的项目。   本文总结   本文主要和大家介绍下SheetJS 、exceljs 、handsontable、node-xlsx 等不同的前端表格解决方案。相信通过本文的比较,大家对SheetJS 、exceljs 、handsontable、node-xlsx 都会有一个初步的了解。在下次前端表格项目中也能有一个充分的、择优的考量!   因为篇幅有限,文章并没有过多展开,如果有兴趣,可以在我的主页继续阅读,同时文末的参考资料提供了大量优秀文档以供学习。最后,欢迎大家点赞、评论、转发、收藏!   参考资料   https://github.com/handsontable/handsontable   https://www.toutiao.com/article/7196542723220931087/   https://github.com/exceljs/exceljs   https://github.com/SheetJS/sheetjs   https://docs.sheetjs.com/docs/demos/frontend/react   https://www.grapecity.com.cn/developer/spreadjs   https://github.com/mgcrea/node-xlsx

4种平民食物,现取现吃伤身体,越新鲜越不能吃老一辈人吃完饭后很多都会把剩菜剩饭留着,等下一顿再来吃,但随着人们的生活也越来越好了,很多家庭都是吃不完就直接扔掉,觉得不新鲜,对身体健康造成伤害,在吃东西上很多也讲究一个新鲜,觉容易出现胃胀,这4种食物,你可能吃了相信每个人都有过胃胀的经历,腹部胀气非常不适,生活中导致这种情况的有很多因素,可能是疾病所导致,也可能是吃饭吃得过快,或吃的太多,或者是边吃边说话,大量空气进入胃部所导致的胃胀,也肤色暗沉长斑的女性,4种食物紧着吃,或有助美白淡斑很多女生可能在气质身高方面都比较好,但是皮肤会有一些问题,那这样的话整体的形象就会拉低一个档次。很多皮肤问题就是有斑点,各式各样的斑点一直困扰着很多的女性朋友,下边就讨论一下关于女3种食物是色斑的清道夫,平时不妨多吃点,淡化色斑气色好色斑是许多女性朋友的心病,虽然色斑不会让我们感觉到疼痛,但却会导致颜值的下降,还会影响我们整个人的气质。对于不少女性朋友来说,色斑就像是扎在心里的一根刺,时常让自己感到心伤却又拔不12岁女孩身高直冲170,儿科医生3种食物是长高王,可多吃点根据医学家对儿童成长研究中心的数据显示有68。8的儿童存在身高发育迟缓的问题,而最常见的诱因是日常的饮食结构不合理的运动方式新陈代谢水平处于低下的状态免疫力无法对抗外界的细菌所导致营养的早餐要包含三样宝,你吃全了吗?早餐是一天中最重要,也是最容易被人忽视的一餐。早餐吃不对,不仅加速衰老,还可能会带来低血糖等问题。早餐是中式好还是西式好?选择西式或者中式早餐都没有什么大问题,但要注意油盐糖的添加高血压的患者,不想脑中风,最好不要吃哪些食物?专家权威解答随着生活质量的提高,社会经济的发展,我们每天都可以有效了解到当天发生的事情,不管是新闻或是娱乐,电子时代的崛起,方便丰富了我们的生活,通过网络推送或是报道,我们可以新发的脑梗死患者人体所需六大营养物质营养是供给人类用于修补旧组织增生新组织产生能量和维持生理活动所需要的合理食物。我们今天要提到的六大营养物质指的就是糖类脂肪蛋白质维生素水和无机盐。其中前三者在体内代谢后产生能量,故穷人思维的威力有多可怕?当你穷时,不如试试古人的炒股思维有钱能使鬼推磨的影响力依然经久不衰!但钱多一定能通神?也不见得。现代社会流行这样一句话钱不是万能的,但没有钱却是万万不能的。不过俗话说得好,君子爱财取之有道,树立健康的金钱观,不仅年底了。问自己!(问到心酸)问天人生为何有悲欢喜乐?事事为啥总不尽人意?天回天都有不测风云,人如何独善其身?万事万物终有变,唯有不变应万变。天让我知道人活着,心态到底有多重要!减少怨怼,坦然面对,才是此生最好恭喜那些不再喜欢发朋友圈的人插图源自网络侵权请联系删除以往,我们曾如此渴望得到他人的认同,后来却发现,世界是自己的,跟他人无关。有了这样的认知,便不再觉得微信朋友圈如此重要了,以前发朋友圈是为了记录生活,可后
奥斯卡解除隔离即将回归海港,海港将结束尴尬的赛季初之旅据报道,6月17日,上海海港队的超级外援奥斯卡在媒体宣布已经解除隔离。奥斯卡写道终于解除隔离,太难了,懂得都懂!真心感谢所有医护人员俱乐部工作人员的耐心理解与陪伴,队友们我来啦。欧第六队!袋鼠爆冷击败秘鲁,亚洲创参加足球世界杯球队数记录在卡塔尔多哈,南美劲旅秘鲁和澳大利亚进行了残酷的世界杯预选赛附加赛,胜者晋级世界杯,负者只能打道回府,赛前球迷和专家一致看好秘鲁队能轻松战胜袋鼠,这支澳大利亚也被称为近25年来最弱去意已决!国米后防核心离队达成协议!主力前锋或转投尤文从上赛季的表现来看,虽然国米在联赛和欧冠赛场上都没有获得理想的成绩,但考虑到他们在赛季初期失去了两名重要的球员,这样的战绩已经达到了外界的预期。小因扎吉的执教水准也得到了球队方面的打人者老婆求放过孩子她是无辜的!潘长江发文力挺唐山烧烤打人事件酝酿至今,成为了主犯陈继志的噩梦,随着网友对这些主犯背景的深挖,越来越多的丑闻浮出水面。古代有个词叫罄竹难书,说的就是这样的人。坏事做绝,说了不如不说。成年人要为自他畏罪潜逃13年,因参演潜伏获奖,随后却被抓捕归案因演技太好而被捕的逃犯2008年,演员张国锋因出演谍战片潜伏,获得年度最佳男配奖提名。2011年,他再次登上热搜新闻,却是因为被抓捕归案的消息。原来,他竟是畏罪潜逃13年的罪犯,本知情人透露任鲁豫的最新伤情暂时不需要动手术,采用保守治疗央视主持人任鲁豫受伤的消息,牵动着不少网友和粉丝的心任鲁豫的主持水平非常棒,男女老少都很喜欢他,感觉他人很正直,不油滑,但他的伤情究竟怎么样了呢?根据知情人的最新说法,任鲁豫的情况浪姐3最新好感度排名王心凌跌落至第7名,冠军让人意外芒果台励志综艺乘风破浪已经正式进入白热化的竞争阶段,四次公演还没有全部上线,但结果却已被曝出,许茹芸胡杏儿和毛俊杰被淘汰。基于初期节目和最新一期节目,网友们对姐姐们的好感度进行排名董璇给了前夫最大的体面!卖饰品交巨额保释金,不说前夫一句坏话01hr董璇曾在一次采访中这样评价自己上一段的婚姻我在该结婚的时候结婚了,该生孩子的时候生孩子了,婚姻是有风险的,对吧?婚姻失败无疑是一个成年人非常难渡地劫,而让大家感到惋惜的原因弃590万中产拿239万底薪,波特帮勇士夺冠,留队做库里的卧龙凤雏2021年夏天2013年的探花波特结束了4年1。07亿的合同成为自由球员,他也受到很多球队的关注。波特能被探花选中也证明他的能力,他在新秀赛季第4年可以得到13。4分6。4篮板1。中超联赛4轮结束后,发挥出色的球队组合都有谁1。大连人的中甲老男孩组合。众所周知,大连人本来是按照中甲进行的人员配置。结果最后被强迫递补中超。不得已只能赶鸭子上架,让中甲人马打中超。可是现在看大连人的中甲老男孩组合确实给人眼新官上任三把火解立彬清理球队关系户,又一北京队淘汰球员曝光目前,北京男篮新帅人选已经确定,上赛季担任球队助教的解立彬,成功转正接手了球队教鞭。客观评价解立彬执教北京男篮一事,笔者认为这是一个最佳的结果了。首先,解立彬的执教风格偏向于防守,