Vue3组件开发(三)搭建表格编辑系统功能拓展
通过环境搭建和组件集成,我们学会使用Vite和SpreadJS,将在线Excel的编辑功能集成在Vue3项目中。
本章,我将带领大家继续扩展Vue3这个项目原型,实现数据绑定、模板文件导入更新导出和数据透视表等功能,本章的实现思路与上一篇(组件集成)基本类似。设计思路同时创建SpreadJS和Designer(表格编辑器)两个组件,用切换路由的方式显示不同组件类型。在编辑器组件的工具栏中增加加载和更新两个按钮。点击加载即可加载从服务器获取的Excel文件,在编辑器中对该组件做一些修改,点击更新按钮,将修改后的文件传递给服务器。切换路由显示SpreadJS组件,在该组件添加加载和更新两个button,功能同上。SpreadJS组件介绍
SpreadJS是一款基于HTML5的原生JavaScript组件,兼容450种以上的Excel公式,提供高度类似Excel的功能,主要用于开发WebExcel组件,实现多人协同编辑、高性能模板设计和数据填报等功能模块,组件架构符合UMD规范,可以以原生的方式嵌入各类应用,并与前后端技术框架相结合。
集成SpreadJS组件
首先在componentsSpreadSheet。vue中集成SpreadJS,代码如下图所示:templatetemplate
具备步骤如下:
1。在模板中添加一个p,这个p就是spread的容器,可以通过css设置容器的宽高位置等,也就是自定义了spread的显示大小及位置。
2。导入此组件所需要的依赖。
3。在setup方法中新建一个spread。
4。在viewsSpreadSheet。vue中引入该组件及相关依赖。importSpreadSheetsfrom。。componentsSpreadSheets。vueimport{ref}fromvueimportaxiosfromaxiosimportGCfromgrapecityspreadsheetsimportExcelIOfromgrapecityspreadexcelio
5。在模板中使用该组件标签templatebuttonclickload(event)加载buttonbuttonclickupdate(event)更新buttonSpreadSheetsvon:workbookInitializedworkbookInitializedSpreadSheetstemplate
6。在setup函数中初始化spread。letworkbookundefined;letworkbookInitialized(wb){workbookwb}功能扩展:Excel文档导入更新导出
Excel文档的导入更新导出功能可通过自定义加载、更新和导出按钮实现,在SpreadSheet组件中添加自定义按钮的思路,与上篇designer组件的设计思路一致:Load方法执行excel文件的加载,接收到后台传递的json数据后,即使用fromJSON方法加载该文件。letload(e){letformDatanewFormData();formData。append(fileName,path);axios。post(spreadloadTemplate,formData,{responseType:json,})。then((response){if(response){alert(加载成功);templateJSONresponse。data;workbook。fromJSON(templateJSON);}})。catch((response){alert(错误);})}Update执行文件的更新。在设计器对加载的文件做些操作,如修改背景色、添加文本等,使用toJSON方法当前spread保存为json数据传递给后台存储。letupdate(e){letspreadJSONJSON。stringify(workbook。toJSON());letformDatanewFormData();formData。append(jsonString,spreadJSON);formData。append(fileName,fileName);axios。post(spreadupdateTemplate,formData)。then((response){if(response){alert(更新成功);}})。catch((response){alert(错误);})}Save方法执行将spreadjson导出为excel文件。exportSpreadJSjsontoexcelfileexcelio。save(json,function(blob){dowhateveryouwantwithblobsuchasyoucansaveit},function(e){processerrorconsole。log(e);});功能扩展:数据透视表
SpreadJS内置了数据透视表功能,通过将其集成到项目中,便可以使用数据透视表,该表支持排序、过滤等条件格式,可以按不同维度分析数据,并且可以自定义主题。
SpreadJS的数据透视表支持两种格式的数据源:tablename:数据透视表使用一个表格的名字去获取数据源。rangeformula:数据透视表使用工作表的一个范围公式获取数据,这个范围公式必须是工作表的绝对路径。
若使用数据透视表,需要添加如下链接到文档的开始部分:head。。。head
使用一个表格的名称去创建数据透视表:letspreadnewGC。Spread。Sheets。Workbook(document。getElementById(ss),{sheetCount:2});letsheet1spread。getSheet(0);letsheet2spread。getSheet(1);sheet1。setRowCount(250);lettablesheet。tables。add(table1,0,0,200,200);sheet1。setArray(0,0,pivotSales);letpivotTablesheet2。pivotTables。add(PivotTable,table1,0,0,GC。Spread。Pivot。PivotTableLayoutType。outline,GC。Spread。Pivot。PivotTableThemes。medium2);
也可使用工作表的一个范围公式创建数据透视表:letrangeSheet2!A1:D4;letpivotTablesheet2。pivotTables。add(PivotTable,range,0,0,GC。Spread。Pivot。PivotTableLayoutType。outline,GC。Spread。Pivot。PivotTableThemes。medium2);
通过切换路由可以看到SpreadJS与在线表格编辑器可以正常切换显示。在编辑器中修改加载的Excel文件,点击工具栏更新按钮,再切换至SpreadJS组件,点击加载按钮便可以看到刚才所修改的文件已被更新。
以上就是在Vue3中集成SpreadJS与在线表格编辑器的全部内容,除了Vue,SpreadJS还可以原生的方式嵌入各类应用(桌面软件、app、web),并与各类前后端技术框架(java、。NET、JavaScript、Vue、React等)相结合。
通过集成SpreadJS,开发者可研发出高性能的公式计算、在线导入导出Excel文档、数据透视表和可视化分析功能,为系统使用者提供灵活易用的用户体验。
欢迎点击下方了解更多获取更多技术详情。
异种肾移植(移植动物的肾脏)方面又有好消息,好事频出啊刚接到新的植入人工肾方面的喜讯:可植入人工肾脏,又有什么研究进展?没想到在异种肾移植方面的曙光又出现了!好事频出啊!其实,机器代替肾脏始终没有完整的肾脏好,因……
B端网站关键词选得好,精准流量没得跑【新网建站资讯】对于ToB企业,什么是B端关键词?与C端关键词的区别是什么?先来认识认识B端关键词:我们熟知的B2B关键词通常说的是目标客户(如厂家、批发商企业、供……
ChipStation您身边的智能固件升级管家您是否遇到这些困扰库存风险原厂OEM固件升级,库存产品无法及时更新,面临滞销客户流失客户无法购买到最新版本的产品时,将另寻供应商,引发后续订单告吹成本增加产品返厂升级,需为此额……
君子兰不长叶的原因和解决方法君子兰有一个特性,您去换盆的时候换的盆比较大,它会先在盆土里边长根系,根系长得足够多了以后再去长叶片,如果您用非常大的盆,他的根一直在生长。没有达到它合适的条件,它只会长根系,……
对华关税,美国企业承担90以上,为啥搬起石头砸自己的脚?中美关税的负担者华说做生意的人很喜欢算账,因为算了账,才会知道是亏了还是赚了。美国穆迪投资者服务公司近来算了一笔账。美国消费者新闻与商业频道(CNBC)报道说,该公……
骁龙870可以用五年吗?手机的使用年限其实不知在芯片的性能持久力上,而是在整体。骁龙870可以用五年吗?按照性能来说是没有问题的,但还是得综合考虑它的使用情况。比如说:五年中,你的屏……
vivo新OS即将亮相开发者大会,该有的都有了今天vivo正式官宣了一个好消息,vivo开发者大会将于11。19在深圳举办,届时vivo新OS也将一同亮相,并且这个也是网友最为关心的,关于这个vivo新OS,有数码博主也曝……
iPhone13动手玩iPhone12S这个名字更适合它伴随转场动画以及加州著名风景和标志性建筑,MarlenaShaw那首经典的《CaliforniaSoul》响起,苹果秋季发布会终于到来,这可能是整场发布会最精彩的部分,后面像例……
大数据学习需要学历吗?大数据学习需要学历吗?近年来,随着大数据市场规模的增长,很多人看到了藏在大数据之中的机遇,非大数据行业的小白想要进入到这一行业选择学习大数据技术,有的学历不够高的就会问到……
索尼PSP的编年史PSP是日本索尼公司开发的多功能掌机,2004年12月12日,索尼发布了第一款PSP,这款多功能游戏机在当时发售时,晚于其竞争对手任天堂NDS掌机一个月,但是人们依旧被PSP当……
5G网络那么快,今后路由器没有存在的价值了?宽带也没用了?谢邀!5G是无线网络,路由器是有线网络,在现有的技术条件下有线网络的网速肯定比无线网络快很多。而且随着电视、手机屏幕分辨率越来越高,在线视频的体积也会越来越大,对网速的要求也越……
DockerPHP入门实践(三)第三章。创建一个ThinkPHP应用程序在本教程的其余部分,我们将基于ThinkPHP框架完成一个天气查询的应用。使用天气查询API文档开发指南Web服务API高德地图A……