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

语雀弃用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

中蒙界湖贝尔湖贝尔湖位于呼伦贝尔草原的西南部的边缘,是中蒙两个国家界湖。贝尔湖呈现是椭圆形,长为40千米,宽为20千米,整个贝尔湖面积是608。78平方千米,蓄水量为55亿立方米。贝尔湖是哈拉哈印度人上厕所真的如网上所说只用手指不用手纸吗?许多人没搞清楚一点水冲和用手抠是两个概念。我在印度各地待了大约20天,从南到北,印度班加罗尔以南还能买到厕纸,再往北想买厕纸就非常难了。游客特别多的景区或许能买到。在印度一般消费还秦始皇帝陵博物院8月28日起恢复开放兵马俑票务在线8月27日1151发布公告根据最新疫情防控工作安排,秦始皇帝陵博物院在做好疫情常态化防控的同时于2022年8月28日起恢复开放。根据疫情防控要求,秦始皇帝陵博物院单日何止鸿蒙系统,国产操作系统根社区传来好消息,加速生态发展鸿蒙是国产操作系统的一大创新项目,在华为的自主研发支持下,给国产厂商进军物联网智能操作系统领域提供了支持。然而何止鸿蒙系统,国产操作系统根社区openKylin(开放麒麟)传来好消OPPOK11Pro曝光,5300mAh80W,还有天玑9000加持一直以来,OPPO无论是产品本身还是品牌方面,相比小米都处于劣势,唯一的优势在于国内渠道,但支撑渠道优势的利润空间限制着其产品竞争力的提升,也会进一步削弱其品牌价值,因此OPPO必互联网商业创始人训练营一切商业的底层逻辑及其本质就是搂人搞钱撸串串捂脸未来的一切商业都是互联网商业。胜利愚夫愚言在商言商愚斋茶聊数字社交互联网商业直播主题预告一互联网商业哲学道法术器势形而上1道商业观2最初的互联网是怎样的,经科学家努力提出规则将网络免费开放三丶随着美国科学家紧张而严密的研制和试验,世界最早的互联网一一阿帕网于69年横空出世。这一虚拟大网把十余所大学的计算机主机连接起来形成一个网络,而位于各节点的大型计算机采用分组交换要性价比,更要强续航!2022年四款优秀的智能手机,向您诚恳推荐您在阅读前请点击上面的关注二字,后续会第一时间为您提供更多有价值的相关内容,感谢您的支持。很多人在购买手机的时候特别注重性价比,因为高性价比的手机,可以花更少的钱,买到性能更强悍的非洲王传音控股的好运正在消失斑马消费任建新没有哪家企业永远拥有好运气。传音控股早年用功能机制霸非洲手机市场,赚得盆满钵丰,成为众人传阅的商业经典案例。如今,增收难增利,危机已在一步步逼近。业绩疲软十多年前,传不出所料,高通正式宣布,外媒来不及了,华为阿里已抢先一步多学学多看看!点击关注,每天精彩不断!导读不出所料,高通正式宣布,外媒来不及了,华为阿里已抢先一步!我们都知道,随着智能手机等科技板块的崛起,整个市场对芯片的需求也在增加,这也让高鼎力相助!这款P50不止有5G近期,手机圈热度最高的就是华为Mate50系列发布会和苹果秋季发布会,这两场发布会一时间盖住了其他厂商的风头,都在关注这两场发布会的时候,有一款新机没有做过多的宣传,悄悄地发布了,
宅男财经连花清瘟又上热搜!专家呼吁按需购药视频加载中连花清瘟断货的消息不断发酵,而随着近期多地防疫政策相继优化,市民纷纷开始囤药,连花清瘟再一次被推上风口浪尖。此前,部分药店对连花清瘟胶囊都有不同程度的提价,有药店甚至已提司马迁犯了什么错,汉武帝为何对他实施最残忍的宫刑宫刑对男人来说可谓是奇耻大辱,很多被施宫刑的人身体和心理都收到巨大伤害,因此有如行尸走肉一般,没有灵魂,像腐烂的木头,所以宫刑又称腐刑。司马迁到底如何惹怒了汉武帝,导致被施宫刑?司如果停止清零,奥密克戎会对人们造成多大的伤害?专家提出看法在新冠疫情的三年里,人世间发生了许许多多的悲欢离合,而在新冠病毒的世界里,人生的大起大落之快之刺激,也远远超出了常人想象。截至目前,全世界因新冠致死的人数已超过660万而在新冠病毒清朝没有一个昏君?其实,那是不知道什么才是真正的昏君人们经常说大清朝的绝大多数皇帝都非常勤政,几乎没有一个昏君(慈禧不算,因为她不是皇帝),可是却让中国沦为了半殖民地半封建社会。这实在是让人百思不得其解,因而有人将其归结为天命。其实李钟硕宋仲基上演斯文Look!韩剧眼镜男神盘点,有你的菜?眼镜,除了作为辅佐视力的超强帮手之外,有时候还会带有性感禁欲系的加持!虽然几乎所有的演员在上镜时通常都不会佩戴眼镜,但是有时候根据剧情需要而佩戴的他们却总是会挑起我们悸动澎湃的心跳铁血北朝83力排众议谋迁都太和十七年(493年)八月,孝文帝突然召集群臣到明堂,宣布了一个大消息他要亲征南齐。一听这话,满朝哗然,除了孝文帝的几个铁杆心腹外,大部分人的表情已经表明了态度,反对。但没有人敢第秦始皇与隋文帝隋炀帝,历史地位影响评价,相似和不同之处隋朝和秦朝的共同之处。隋朝和秦朝都是在经历数百年分裂之后的统一,都是历任两帝,享国日短,都未传位于太子而传他子,导致暴政乱政而亡国,秦朝出现了赵太后吕不韦白起,隋朝出了独孤皇后杨素阿里国际站运营篇(16)阿里国际站运营小工具分享NO。16阿里国际站运营小工具分享都说国际站运营乱七八糟的小东西知道少,就不拿出来分享,emmm,想了想运营这东西要想做好就是费时间费精力,老板愿意学自己干的话就拿去(啥事儿都自己撬动流量密码的麻六记,能否超越俏江南?作为俏江南和麻六记的创始人,张兰可谓是一个有着传奇色彩的女商人。从白手起家开了第一家阿兰餐厅,到冲进高端餐饮赛道打造京圈川菜天花板俏江南,并荣登胡润财富榜成女富豪,再到与资本博弈中有哪几个症状提示孕妈需补铁?头条创作挑战赛导读在孕期,我们经常能够听到要补叶酸补钙等等的营养摄取要求。但除了这些以外,孕期补铁也是非常关键的一点,也是很多孕妈在怀孕期间容易忽视的事情,以至于很多孕妈直到出现贫网传的4大鉴酒方法,靠谱的有几个?70岁老酿酒师道出真相近些年,我们的生活中越来越离不开酒了,不管是聚餐还是自饮,都少不了酒水的存在,一杯好酒既是精神食粮,也是社交中必不可少的调剂品。可是谈及如今的白酒市场,只能用鱼龙混杂一词来形容,许