新人必看!手把手教你如何使用浏览器表格插件(下)

news2024/12/23 10:06:54

摘要:本文由葡萄城技术团队于博客园原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。

前言 | 问题背景

作为一名优秀的打工人,Excel是大家上班中必不可少的办公软件。随着互联网时代的到来,越来越多的公司开始使用各种B/S系统来处理表格数据文件。那么有没有一种可以直接在浏览器中使用的Excel插件去处理数据呢?答案是肯定的。本文小编将为大家介绍如何在Vue框架中集成在线表格插件(以下简称为“SpreadJS”)和在线表格编辑器(类Excel浏览器插件)实现在浏览器中使用Excel插件来处理数据。

在本教程中,我们将使用node.js,请确保已安装最新版本,除此之外还需要使用软件Visual Studio Code(以下简称“VSCode”)作为编程环境,请您以管理员身份运行它。

上一篇文章(《新人必看!手把手教你如何使用浏览器表格插件(上)》)小编为大家介绍了如何在Vue框架中集成表格插件(SpreadJS),本章小编将继续为大家介绍如何在Vue中集成在线表格编辑器。

如何在Vue框架中集成在线表格编辑器(designer)

在Vue中集成在线表格编辑器:

本节内容小编将为大家介绍Vue框架中如何集成在线表格编辑器和如何实现使用编辑器实现表格数据绑定。

Vue集成在线表格编辑器和SpreadJS的方法相似,首先引入需要集成到Vue中的资源,其次使用styleInfo标签和designerInitialized设置表格的大小(使用方法与Vue集成SpreadJS一样,具体可以参考第一篇文章)。

import {defineComponent} from "Vue"

// SpreadJS核心资源

import GC from "@grapecity/spread-sheets"

// 形状资源

import "@grapecity/spread-sheets-shapes"

// 二维码资源

import "@grapecity/spread-sheets-barcode"

// 图表资源

import "@grapecity/spread-sheets-charts"

// 文件IO相关资源

import "@grapecity/spread-excelio"

// 打印资源 打印资源要在pdf之前

import "@grapecity/spread-sheets-print"

// 导出pdf相关资源

import "@grapecity/spread-sheets-pdf"

// 透视表相关资源

import "@grapecity/spread-sheets-pivot-addon"

// 集算表相关资源

import "@grapecity/spread-sheets-tablesheet"

// 组件运行时样式信息

import "@grapecity/spread-sheets/styles/gc.spread.sheets.excel2013white.css"

// 组件运行时语言资源

import "@grapecity/spread-sheets-resources-zh"

// 设计器资源,设计器资源要在设计器核心资源之前

import "@grapecity/spread-sheets-designer-resources-cn"

// 设计器核心资源

import \* as GcDesigner from "@grapecity/spread-sheets-designer"

// 设计器css

import "@grapecity/spread-sheets-designer/styles/gc.spread.sheets.designer.min.css"

// 设计器对Vue的支持资源

import Designer from "@grapecity/spread-sheets-designer-Vue"

import {bindFile} from "../files/bindFile"

import {bindSchema,generateData} from "../files/bindTree.js"
                             (Vue引入在线表格编辑器的资源)

实现数据绑定:

为了更形象、具体的描述数据绑定,小编将用一个简单的小案例为大家介绍在SpreadJS中数据绑定是如何实现的。

实现需求:通过SpreadJS实现一个简单的苹果销售量的数据表格。数据表格中的数据可以通过数据文件实现将数据回显到数据表格中。下面是具体实现的方法步骤:

(1)设计可视化表格:

使用spreaeJs表格设计器拉拽设计出一个表格如下图所示(和Excel创建表格的方法一样,不详细介绍)。

在这里插入图片描述

								      (初始化一个Excel表格)

除了SpreadJS可视化方法创建表格之外,小编再为大家再介绍一种使用数据文件实现表格的方法:

在提供的源码资源中包含了两个数据文件bindFile.js和bindTree.js,而bindFile.js文件则是上图表格的Json文件格式,使用spread.fromJSON(bindFile)方法可以读取bindFile.js文件中的内容并显示到页面上。

const loadBindData = (spread:GC.Spread.Sheets.Workbook) =\> {

// 加载文件(第一步)

spread.fromJSON(bindFile)

}
								(读取bindFile.js文件的代码)

(2)创建工作表:

设计完可视化表格之后就是创建数据表来存储数据,创建工作表也可以分为可视化创建工作表和数据文件实现工作表,由于可视化设计工作表操作比较简单,小编在这里不作详细介绍。下面主要介绍如何通过代码实现数据表:使用designer的setData方法读取bindTree.js文件中的bindSchema(数据表的Json格式)并加载到SpreadJS的页面中。

//第二步绑定数据绑定表信息(designer初始化完成之后,加载右侧Tree)

designer.setData("treeNodeFromJson",JSON.stringify(bindSchema))

designer.setData("oldTreeNodeFromJson",JSON.stringify(bindSchema))

designer.setData('updatedTreeNode',JSON.stringify(bindSchema))

(实现创建工作表的代码)

(3)实现数据绑定:

设计完工作表之后,下面将介绍如何通过代码和数据文件实现数据绑定:

首先去调用bindTree.js文件中的generateData方法生成随机数据,然后使用

GC.Spread.Sheets.Bindings.CellBindingSource方法去生成绑定的数据源,再将绑定的数据源放到初始化的活动页sheet中,最后去加载数据。具体实现代码如下:

const loadBindData = (spread:GC.Spread.Sheets.Workbook) =\> {

// 加载文件(第一步)

spread.fromJSON(bindFile)

//第三步绑定数据

// mock数据

let data = generateData(20)

// 生成绑定数据源

let source = new GC.Spread.Sheets.Bindings.CellBindingSource(data)

// 获取当前活动sheet

let sheet = spread.getActiveSheet() as GC.Spread.Sheets.Worksheet

// 获取sheet中的目标表格,并将表格的数据设置为随数据量自动纵向扩展

let table = sheet.tables.findByName('report_card')

table.expandBoundRows(true)

// 加载数据

sheet.setDataSource(source)

}

(实现数据绑定的代码)

将上面的步骤代码合在一起之后的整体代码如下所示:

/

/绑定数据信息(第二步)

const initDesigner = (designerEntity:GcDesigner.Spread.Sheets.Designer.Designer) =\> {

designer = designerEntity

customeConfig(designer)

//第二步绑定数据绑定表信息(designer初始化完成之后,加载右侧Tree)

designer.setData("treeNodeFromJson",JSON.stringify(bindSchema))

designer.setData("oldTreeNodeFromJson",JSON.stringify(bindSchema))

designer.setData('updatedTreeNode',JSON.stringify(bindSchema))

let spread = designer.getWorkbook() as GC.Spread.Sheets.Workbook

loadBindData(spread)

}

const loadBindData = (spread:GC.Spread.Sheets.Workbook) =\> {

// 加载文件(第一步)

spread.fromJSON(bindFile)

//第三步绑定数据

// mock数据

let data = generateData(20)

// 生成绑定数据源

let source = new GC.Spread.Sheets.Bindings.CellBindingSource(data)

// 获取当前活动sheet

let sheet = spread.getActiveSheet() as GC.Spread.Sheets.Worksheet

// 获取sheet中的目标表格,并将表格的数据设置为随数据量自动纵向扩展

let table = sheet.tables.findByName('report_card')

table.expandBoundRows(true)

// 加载数据

sheet.setDataSource(source)

}

return{

styleInfo,initDesigner

}

(整体流程的代码)

在这里插入图片描述

																(最终效果图)

做完这些之后便可以在浏览器中体验和使用在线编辑器了(高度类似Excel操作)。

备注:

整理的完整源码附文章下方day2文件夹中的vue3-spreadJS-ts文件,直接在终端中使用npm run dev指令运行即可。

源码链接:https://pan.baidu.com/s/1ddz8UCuDeVZEIvXiff70xw 密码:dnpx

总结

这两篇文章为大家详细的介绍了SpreadJS在Vue框架中使用的方法和具体的作用,希望可以帮助大家在学习SpreadJS的道路上可以起到帮助。

更多参考资料:

本文对应的视频教程

表格控件技术资料文档

>>>>扩展资料:

在线Excel表格文档版本管理的设计和实现 - 葡萄城技术博客 (grapecity.com.cn)

提高工作效率的神器:基于 SpreadJS 实现Chrome Excel扩展插件 - 葡萄城技术博客 (grapecity.com.cn)

类Excel表格控件SpreadJS应用场景 —— 企业所得税申报系统的分析与解决方案 - 葡萄城技术博客 (grapecity.com.cn)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/571058.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

理解Linux TunTap设备

入门 TUN/TAP是操作系统内核中的虚拟网络设备,可以完成用户空间与内核空间的数据的交互。网络协议栈中的数据通过该设备可以进入到用户空间中,而用户空间中的程序通过该设备空间进入到内核空间的网络协议栈。 TUN模拟的是三层设备,操作三层…

chatgpt赋能python:Python主程序:提升编程效率与合作性的最佳选择

Python 主程序:提升编程效率与合作性的最佳选择 前言 Python 作为一门简单、易于学习并具备强大功能的编程语言,已经成为了最受欢迎的编程语言之一。Python 主程序不仅能够编写复杂的算法和进行数据处理,而且还可以实现广泛的应用&#xff…

基于SpringBoot+Uniapp的球队周边微信小程序

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍: 随着微信小程序的兴起…

【jeecg-boot】jeecg-boot的一些功能扩展:

文章目录 一、Template里面将数组对象里面的值遍历>对象的key二、利用ES6的解构赋值互换数组数据:三、a-select实现可输入可下拉:四、a-table实现动态表头:五、jeecg-boot列自定义:六、jeecg-boot合计行: 一、Template里面将数…

Android 逆向工程,反编译心得

前言 apk的反编译是我们在Android开发中绕不开的一个坎,对于反编译这门技术,我们应该抱着学习的态度,学的越多,也越能防备别人反编译我们,这就是所谓的知己知彼吧,哈哈 需要准备的工具 Apktool&#xff…

centos下Harbor的安装(超详细+避坑)

前提 这篇文章讲的是在我的本地虚拟机上安装Harbor的一些过程和中途所遇到的一些问题和排除问题的情况说明;安装好的harbor的访问信息如下:http://192.168.45.146:8033/harbor(admin/Harbor12345)环境 本次所使用的环境和软件的各…

国外APP外包开发及上线流程

现在很多APP都做成全球通用版,尤其是一些小游戏类的APP,玩法全球基本都类似,在多个国家上线多个销售渠道。今天和大家分享一下Google Play上线流程及注意事项,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件…

ChatGPT:AI时代的创造力激活

《你好,ChatGPT》是一本深入探索人工智能(AI)领域的畅销书籍,它以ChatGPT为切入点,系统地介绍了AI和AIGC的基础概念、技术原理、应用领域和未来展望。这本书通俗易懂,由浅入深,层层递进&#xf…

WMS仓储管理系统解决方案能帮助电子企业解决哪些问题

WMS仓储管理系统解决方案是一种针对仓库管理的软件系统,它能够有效地解决电子企业在仓储管理方面的问题。在电子行业,由于产品的生命周期较短,且需求变化快速,WMS仓库管理系统的应用对于电子企业的管理有着重要的意义。本文将探讨…

DATAV通过配置nginx代理实现https访问

DATAV通过配置nginx代理实现https访问 首先要确保你的 datav 和 datav_proxy 的界面能用http正常访问 在nginx中添加datav配置 server {listen 8181 ssl;server_name localhost;ssl_certificate server.crt;ssl_certificate_key server.key;ssl_session_cache …

“来此加密“:轻松在线申请多域名和泛域名SSL证书

启用SSL证书是网站安全的关键。它加密数据传输,防止黑客窃听和篡改。SSL证书提升网站可信度,增加用户信任。搜索引擎更青睐启用SSL证书的网站,提高可见性和流量。此外,SSL证书还防止钓鱼和恶意软件威胁,保护用户安全。…

A-21S吸金树脂在金矿尾水、镀金废水中回收金的应用

吸金树脂Tulsimer A-21S 一、技术介绍 传统上使用活性碳吸附金子,珍贵的金会被活性碳吸附于表面,再藉由洗涤或直接焚烧以回收金。使用离子交换树脂回收贵金属比活性碳还具有多方面的优势, 因为藉由特殊制造过程中, 我们可以在其结…

python---动态类型

动态类型:是指在程序运行过程中,变量的类型可能会发生改变。 a的类型随着程序运行过程中会发生改变。 后面写不写类型是无所谓的! 相比之下静态类型的语言是更好的! 代码注释 可以使用’‘’ ‘’‘ / #来对代码进行注释

03_堆+MAT工具

堆栈方法区的关系: HotSpot是使用指针的方式来访问对象: Java堆中会存放访问类元数据的地址 reference存储的就是对象的地址 三种JVM: Sun公司的HotSpotBEA公司的JRockitIBM公司的J9 VM 一、堆体系概述 Java7之前 Heap 堆:一个…

LabVIEWCompactRIO 开发指南36 确定“Clock Ticks”或模拟时间

LabVIEWCompactRIO 开发指南36 确定“Clock Ticks”或模拟时间 桌面执行节点可以控制模拟时间,因此开发人员可以使用模拟I/O在开发计算机上执行期间更改关键点的激励。要成功使用此功能,需要测量FPGA VI完成所需的时间,或者需要以直观地知道…

将矩阵各行顺序进行反排numpy.flipud()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 将矩阵各行顺序进行反排 numpy.flipud() [太阳]选择题 请问关于以下代码的表述错误的是? import numpy as np a np.array([[1,2,3],[4,5,6],[7,8,9]]) print("【显示】a: \…

PLC/DCS系统中电磁干扰的来源及解决办法

自动化系统中所使用的各种类型DCS/PLC等自动化设备,有的是集中安装在控制室,有的是安装在生产现场和各种电机设备上,它们大多处在强电电路和强电设备所形成的恶劣电磁环境中。要提高这类控制系统可靠性,必须消除各种干扰才能有效保…

lwIP更新记08:TCP 回调函数中调用 tcp_abort 终于安全了

从 lwIP-1.4.0 开始,tcp 回调函数中调用 tcp_abort 函数终于安全了。 在此之前,如果从 tcp 回调函数中调用 tcp_abort,则会访问未分配的内存。 应用程序关闭连接,正常情况下是调用 tcp_close 函数,经过 4 次握手安全的…

XSS - 跨站脚本攻击

一、XSS简介。 XSS跨站脚本(Cross-Site Scripting,XSS)自1996年诞生以来,如今已经历十多年的演化。由于和另一种网页技术-层叠样式表(Cascading Style Sheets,CSS)的缩写一样,为了防…

Netty和Tomcat的区别、性能对比

文章目录 一、Netty和Tomcat有什么区别?二、为什么Netty受欢迎?三、Netty为什么并发高 ? 一、Netty和Tomcat有什么区别? Netty和Tomcat最大的区别就在于通信协议,Tomcat是基于Http协议的,他的实质是一个基…