Vue3组件开发(三)搭建表格编辑系统功能拓展
通过环境搭建和组件集成,我们学会使用 Vite 和 SpreadJS ,将在线Excel的编辑功能集成在 Vue 3 项目中。
本章,我将带领大家继续扩展 Vue 3 这个项目原型,实现数据绑定、模板文件导入/更新/导出和数据透视表等功能,本章的实现思路与上一篇(组件集成)基本类似。设计思路同时创建SpreadJS 和Designer(表格编辑器)两个组件,用切换路由的方式显示不同组件类型。在编辑器组件的工具栏中增加"加载"和"更新"两个按钮。点击"加载"即可加载从服务器获取的Excel文件,在编辑器中对该组件做一些修改,点击"更新"按钮,将修改后的文件传递给服务器。切换路由显示 SpreadJS 组件,在该组件添加 "加载"和"更新"两个button,功能同上。SpreadJS 组件介绍
SpreadJS 是一款基于 HTML5 的原生JavaScript组件,兼容 450 种以上的 Excel 公式,提供高度类似 Excel 的功能,主要用于开发 Web Excel 组件,实现多人协同编辑、高性能模板设计和数据填报等功能模块,组件架构符合UMD规范,可以以原生的方式嵌入各类应用,并与前后端技术框架相结合。
集成 SpreadJS 组件
首先在components/ SpreadSheet.vue中集成SpreadJS,代码如下图所示:
具备步骤如下:
1. 在模板中添加一个p,这个p就是spread的容器,可以通过css设置容器的宽高位置等,也就是自定义了spread的显示大小及位置。
2. 导入此组件所需要的依赖。
3. 在setup方法中新建一个spread。
4. 在views/ SpreadSheet.vue中引入该组件及相关依赖。import SpreadSheets from "../components/SpreadSheets.vue" import {ref} from "vue" import axios from "axios" import GC from "@grapecity/spread-sheets" import ExcelIO from "@grapecity/spread-excelio"
5. 在模板中使用该组件标签
6. 在setup函数中初始化spread。let workbook = undefined; let workbookInitialized=(wb)=>{ workbook = wb }功能扩展:Excel 文档导入/更新/导出
Excel 文档的导入/更新/导出功能可通过自定义"加载"、"更新"和"导出"按钮实现,在SpreadSheet组件中添加自定义按钮的思路,与上篇designer组件的设计思路一致:Load方法执行excel文件的加载,接收到后台传递的json数据后,即使用fromJSON方法加载该文件。let load = (e)=>{ let formData = new FormData(); formData.append("fileName", "path"); axios.post("spread/loadTemplate", formData, { responseType: "json", }).then((response) => { if(response) { alert("加载成功"); templateJSON = response.data; workbook.fromJSON(templateJSON); } }).catch((response) => { alert("错误"); }) }Update执行文件的更新。在设计器对加载的文件做些操作,如修改背景色、添加文本等,使用toJSON方法当前spread保存为json数据传递给后台存储。let update = (e)=>{ let spreadJSON = JSON.stringify(workbook.toJSON()); let formData = new FormData(); formData.append("jsonString", spreadJSON); formData.append("fileName", "fileName"); axios.post("spread/updateTemplate", formData).then((response) => { if(response) { alert("更新成功"); } }).catch((response) => { alert("错误"); }) }Save方法执行将spread json导出为excel文件。//export SpreadJS json to excel file excelio.save(json, function (blob) { //do whatever you want with blob //such as you can save it }, function (e) { //process error console.log(e); });功能扩展:数据透视表
SpreadJS内置了数据透视表功能,通过将其集成到项目中,便可以使用数据透视表,该表支持排序、过滤等条件格式,可以按不同维度分析数据,并且可以自定义主题。
SpreadJS 的数据透视表支持两种格式的数据源:table name: 数据透视表使用一个表格的名字去获取数据源。range formula: 数据透视表使用工作表的一个范围公式获取数据,这个范围公式必须是工作表的绝对路径。
若使用数据透视表,需要添加如下链接到文档的开始部分: ...
使用一个表格的名称去创建数据透视表:let spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"), { sheetCount: 2 }); let sheet1 = spread.getSheet(0); let sheet2 = spread.getSheet(1); sheet1.setRowCount(250); let table = sheet.tables.add("table1", 0, 0, 200, 200); sheet1.setArray(0, 0, pivotSales); let pivotTable = sheet2.pivotTables.add("PivotTable", "table1", 0, 0, GC.Spread.Pivot.PivotTableLayoutType.outline, GC.Spread.Pivot.PivotTableThemes.medium2);
也可使用工作表的一个范围公式创建数据透视表:let range = "=Sheet2!A1:D4"; let pivotTable = sheet2.pivotTables.add("PivotTable", range, 0, 0, GC.Spread.Pivot.PivotTableLayoutType.outline, GC.Spread.Pivot.PivotTableThemes.medium2);
通过切换路由可以看到 SpreadJS 与在线表格编辑器可以正常切换显示。在编辑器中修改加载的Excel文件,点击工具栏"更新"按钮,再切换至SpreadJS组件,点击"加载"按钮便可以看到刚才所修改的文件已被更新。
以上就是在Vue 3中集成SpreadJS与在线表格编辑器的全部内容,除了 Vue ,SpreadJS 还可以原生的方式嵌入各类应用(桌面软件、app、web),并与各类前后端技术框架(java、.NET、JavaScript、Vue、React 等)相结合。
通过集成 SpreadJS ,开发者可研发出高性能的公式计算、在线导入导出 Excel 文档、数据透视表和可视化分析功能,为系统使用者提供灵活易用的用户体验。
欢迎点击下方"了解更多"获取更多技术详情。
黑暗邪恶机械人造系列奥特曼一般为宇宙人或其他外星生物处于某些目的,仿造某些奥特曼而制造出来的机械体或黑暗体,或原先光明后来由于某些因素而堕入黑暗,还有一小部分是因人间体心术不正导致的,以及因被消灭的怪兽和宇
亚洲铝王面临的465年刑期,是怎么作出来的?wumiancaijing。com曾拿下全球第一大IPO,参股7家银行,但如今旗下公司濒临破产,创始人在海外可能面临最高465年的刑期,忠旺集团为何突然衰落至此?本文由无冕财经(w
苹果发布了iphone13系列手机,我在其官网上看到了深深的恶意2021。9。15凌晨,苹果发布了其最新的iphone13系列手机,作为工作的一部分,今天早上一早就到其官网上看其详细的功能介绍。在其官网上,介绍手机拍照的功能展示区,展示的一个满
深度解析vivoX70系列所用到的光学术语随着vivo的自己爆料,计划于9月9日发布的vivoX70系列的诸多影像技术逐渐揭开面纱,同时一些熟悉又陌生的光学术语也浮现在众人面前。说陌生,之前只关注手机数码圈的可能很少看到过
奥特曼系列作品收集20世纪60年代1966年奥特Q没有巨大英雄,主要是人和怪兽的故事,通常是被认为是圆谷特摄的试水之作。1966年奥特曼首次出现的巨大英雄形象奥特曼首次登场,可谓是奥特曼系列的开山之
滤镜带不动变现,小红书还能扛多久?wumiancaijing。com在广告业务占据八成营收情况下,平台内容又屡现信任危机,小红书的变现之路注定坎坷。本文由无冕财经(wumiancaijing)原创发布作者唐晓君编辑
神龙斗士龙神丸形态盘点神龙斗士,又名超魔神英雄传,是魔神英雄传系列的第三部作品。龙神丸是战部渡呼唤的魔神,可以使用从各界层的圣神那里传授来的勾玉,进行超力变身提升力量。身高3。75米体重7。95吨最大出
死多一次,这家生鲜电商想卖身却无人接盘wumiancaijing。com自身造血能力不足的呆萝卜被戳破了泡沫,但严格点说,资本不再相信的,可能是整个生鲜电商。本文由无冕财经(wumiancaijing)原创发布作者海棠
德天瀑布变身黄金瀑布,和之前的清澈瀑布相比你更喜欢哪个?近日,广西降雨量较大,局地暴雨,让中越跨国瀑布德天瀑布水量暴涨,以往清澈的水流被金黄的泥水替代,呈现出难得一见的黄金瀑布壮观景象。德天瀑布位于中国与越南边境处的归春河上游,与紧邻的
从视觉中国奔驰女维权996发现越不要脸越赚钱这几天的热点事件很多,有点让人应接不暇的感觉,虽然表面上都是不相关联的东西,但是仔细思考,还是能想到一些共同的道理,比如在欺诈式维权的这个事情上,可以不要脸的,在压榨员工这个事情上
玩游戏的时候发现CPU带不动显卡会怎么样?CPU和显卡是电脑当中最最重要的两部分,评价一台电脑的性能高低首先要看的就是这两部分。但是CPU与显卡搭配要合理才发挥出最大的性能,所以整天会听到有人说某某CPU带不动某某显卡,有