纯前端表格控件SpreadJS:六个常见的基础问题
suiw9 2024-11-24 21:43 30 浏览 0 评论
SpreadJS 是一款基于 HTML5 的纯前端表格控件,兼容 450 种以上的 Excel 公式,具备“高性能、跨平台、与 Excel 高度兼容”的产品特性,可为企业信息化建设提供表格文档协同编辑、 数据填报和类Excel报表设计的功能支持。
SpreadJS 的组件功能十分丰富,为了更好的上手使用,本文汇集了SpreadJS 的常见技术问题和相关示例代码,不管你是提埋点需求的业务方还是负责代码埋点的开发人员,通过阅读本文,都可尝试搭建出您的第一个在线表格系统。
一、如何获取SpreadJS实例
获取SpreadJS的实例有两种方式:
1、借助在线表格编辑器:作为SpreadJS的主要功能之一,在线表格编辑器可直接在 Angular、 React、 Vue 等前端框架中调用,内置开放的 API 和类 Excel 的 UI 设计元素(如工具面板),可实现高效的模板设计、在线编辑和数据绑定,为最终用户带来高度类似 Excel 的使用体验。
当使用在线表格编辑器时,获取SpreadJS实例的API为:
// gc-designer-container为在线表格编辑器容器的ID let spread = GC.Spread.Sheets.Designer.findControl('gc-designer-container').getWorkbook() |
2、直接借助SpreadJS的容器,获取SpreadJS实例的API为:
// ss为SpreadJS容器的ID let spread = GC.Spread.Sheets.findControl(document.getElementById('ss')) |
二、如何操作表单
表单(WorkSheet)是用于呈现数据和处理数据的载体。SpreadJS提供了相对灵活的表单操作接口,即可以添加一个或多个表单,又可以直接绑定数据源。
|
三、如何添加数据
给表单添加数据时,SpreadJS提供了两种方式,分别是数据绑定方式和非绑定方式。使用非绑定方式时,设置数据的API有:
|
针对数据绑定方式,SpreadJS提供三种形式的数据绑定方式,分别是表单级别绑定、单元格级别绑定和表格级别绑定,不论哪种数据绑定的方式,其设置数据调用的API均为:
|
举例,以表单级别的数据绑定为例,其设置方式如下:
|
四、如何获取数据
在 SpreadJS中,添加数据有两种方式,相对应的获取数据也有两种方式,分别是绑定模式下的数据获取和非绑定模式下的数据获取。
非数据绑定模式下数据获取示例如下:
|
数据绑定模式下的数据获取示例如下:
|
五、如何设计模板
用户可以使用SpreadJS在线表格编辑器或者API来实现填报模板的设计工作。由于业务人员比开发人员更了解报表结构,为了提高工作效率,在实际项目中,报表设计流程会由开发人员完成,而模板设计则会交由业务人员。
六、后端如何保存、发送数据
GrapeCity Documents for Excel (简称:GcExcel)是一款基于 Java 平台的服务端高性能表格组件,这款组件可以与SpreadJS 无缝端兼容,再不需要依赖 Office、POI 或第三方应用软件的情况下,实现批量创建、加载、编辑、打印、导入/导出 Excel 文档。
很多用户如果同时在了解SpreadJS和GcExcel时,往往会认为GcExcel会提供将前端表格数据存储到数据库的功能。这里需要解释一下,所有涉及后端对Excel文件进行的操作,或者在后端对一个文件进行设置值、样式等其他信息等操作的行为,均为GcExcel的组件功能。SpreadJS和GcExcel都不会提供任何关于保存数据至数据库中的服务,具体的保存逻辑需要用户自行定义,前后端数据交互格式由开发人员进行约定。
举例:下图分享了一位用户设计模板并将模板传递到后端,最后保存到数据库中的项目流程图,前端可以调用SpreadJS提供的toJSON()方法导出ssjson传递给后端,后端生成数据表存入数据库以及存储ssjson模板文件都需要研发人自行定义存储逻辑。
目前大部分用户采取的是模板与数据分开保存的模式,即模板可以使用文件,也可以使用ssjson字符串,具体使用哪种方式由开发人员决定。模数分离的好处是在模板加载的同时可以请求数据,且数据最终格式符合SpreadJS的要求。
如果文件中数据量不大,前端也可以将整个工作簿toJSON()以一个大的JSON字符串的形式发送给后端,后端拿到json字符串之后可以利用GcExcel重新构建文件,构建完成之后依旧可以利用GcExcel的API在后端获取填写的数据。
上图是用数据绑定的方式来加载数据,返回给前端的是一个json数据结构,前端拿到数据后直接调用worksheet的setDatasource()即可。如果采用非绑定方式,SpreadJS会接收一个二维数组,并在拿到数据后调用worksheet的setArray()方法加载数据。
以上就是纯前端表格控件SpreadJS六个常见的基础问题及解答,为了能够更轻松的上手SpreadJS,欢迎访问葡萄城产品帮助中心,配合评估指南、新手入门视频、学习指南和常用资源模块,实现组件在项目中的快速应用。
相关推荐
- nginx的反向代理(Nginx的反向代理和负载均衡)
-
nginxProxy代理1、代理原理反向代理服务的实现:需要有一个负载均衡设备(即反向代理服务器)来分发用户请求,将用户请求分发到后端正真提供服务的服务器上。服务器返回自己的服务到负载均衡设备。负...
- Nginx UI: 更好用更现代化的Nginx 管理面板
-
各位铲屎官大家好,我是喵~...
- 性能测试之tomcat+nginx负载均衡(nginxtcp负载均衡)
-
nginxtomcat配置准备工作:两个tomcat执行命令cp-rapache-tomcat-8.5.56apache-tomcat-8.5.56_2修改被复制的tomcat2下con...
- nginx upstream节点健康检查(nginx tcp 健康检查)
-
1、前提条件编译nginx时增加nginx_upstream_check_module模板git地址:https://github.com/yaoweibin/nginx_upstream_check...
- Nginx 的高并发处理能力(nginx支持高并发原理)
-
为了实现Nginx的高并发处理能力,需要从**硬件资源**、**操作系统**、**Nginx配置**等多个方面进行优化。以下是详细的配置和示例:---...
- Nginx最全详解(万字图文总结)(nginxs)
-
大家好,我是mikechen。Nginx是非常重要的负载均衡中间件,被广泛应用于大型网站架构,下面我就全面来详解Nginx@mikechen本篇已收于mikechen原创超30万字《阿里架构师进阶专题...
- 如何用 Nginx 实现前端灰度发布(nginx 灰度测试规则)
-
前言在前端开发中,灰度发布是一种重要的策略,它允许我们在不影响所有用户的情况下,逐步推出新功能或更新。通过灰度发布,我们可以测试新版本的稳定性和性能,同时收集用户反馈。今天,我们将探讨如何使用Ngi...
- nginx配置优化场景-直接套用so happy!
-
前言(叠甲在先)Nginx是一款高性能的Web服务器,广泛应用于互联网领域。...
- Nginx配置前后端服务(nginx前后端分离部署)
-
nginx安装完成后,可以通过命令查看配置文件nginx-t配置文件nginx.conf,是总的配置,有的人会把配置全部配置到这个文件中,如果服务很多,这个文件变得非常庞大,我见过一个配置很大的,在...
- 使用Nginx配置TCP负载均衡(nginx如何配置负载均衡)
-
假设Kubernetes集群已经配置好,我们将基于CentOS为Nginx创建一个虚拟机。...
- Nginx服务器深度指南:安装、配置、优化指令超详解
-
在当今数字化时代,Web服务器是支撑互联网应用的关键基础设施。Nginx作为一款高性能的开源Web服务器,凭借卓越的性能、丰富的功能和出色的稳定性,在Web服务器领域占据了重要地位。无论是大型互联网公...
- Nginx的配置详解(附代码)(nginx基本配置)
-
本篇文章给大家带来的内容是关于Nginx的配置详解(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。常用配置项在工作中,我们与Nginx打交道更多的是通过其配置文件来进行。...
- Nginx配置文件详解(nginx配置文件详解带实例)
-
Nginx配置文件详解Nginx是一款面向性能设计的HTTP服务器,相较于Apache、lighttpd具有占有内存少,稳定性高等优势。...
- 从 0 到 1:构建高可用 Linux 负载均衡集群(基于 Nginx + Keepalived)
-
在高并发业务场景下,单台服务器往往无法支撑大量请求,因此需要使用**负载均衡(LoadBalancing)**技术来提升系统的稳定性和可用性。Nginx+Keepalived是常见的开源负载均...
- 配置Nginx TCP转发(nginx 接口转发)
-
Nginx一般用在HTTP的转发,TCP的转发大都会使用HAProxy。工作中遇到一个需求,用到了Nginx服务作为TCP转发。场景是这样,数据采集设备通过公网将数据推送到后端应用服务,服务部署在业主...
你 发表评论:
欢迎- 一周热门
-
-
Linux:Ubuntu22.04上安装python3.11,简单易上手
-
宝马阿布达比分公司推出独特M4升级套件,整套升级约在20万
-
MATLAB中图片保存的五种方法(一)(matlab中保存图片命令)
-
别再傻傻搞不清楚Workstation Player和Workstation Pro的区别了
-
Linux上使用tinyproxy快速搭建HTTP/HTTPS代理器
-
如何提取、修改、强刷A卡bios a卡刷bios工具
-
Element Plus 的 Dialog 组件实现点击遮罩层不关闭对话框
-
日本组合“岚”将于2020年12月31日停止团体活动
-
SpringCloud OpenFeign 使用 okhttp 发送 HTTP 请求与 HTTP/2 探索
-
tinymce 号称富文本编辑器世界第一,大家同意么?
-
- 最近发表
-
- nginx的反向代理(Nginx的反向代理和负载均衡)
- Nginx UI: 更好用更现代化的Nginx 管理面板
- 性能测试之tomcat+nginx负载均衡(nginxtcp负载均衡)
- nginx upstream节点健康检查(nginx tcp 健康检查)
- Nginx 的高并发处理能力(nginx支持高并发原理)
- Nginx最全详解(万字图文总结)(nginxs)
- 如何用 Nginx 实现前端灰度发布(nginx 灰度测试规则)
- nginx配置优化场景-直接套用so happy!
- Nginx配置前后端服务(nginx前后端分离部署)
- 使用Nginx配置TCP负载均衡(nginx如何配置负载均衡)
- 标签列表
-
- dialog.js (57)
- importnew (44)
- windows93网页版 (44)
- yii2框架的优缺点 (45)
- tinyeditor (45)
- qt5.5 (60)
- windowsserver2016镜像下载 (52)
- okhttputils (51)
- android-gif-drawable (53)
- 时间轴插件 (56)
- docker systemd (65)
- slider.js (47)
- android webview缓存 (46)
- pagination.js (59)
- loadjs (62)
- openssl1.0.2 (48)
- velocity模板引擎 (48)
- pcre library (47)
- zabbix微信报警脚本 (63)
- jnetpcap (49)
- pdfrenderer (43)
- fastutil (48)
- uinavigationcontroller (53)
- bitbucket.org (44)
- python websocket-client (47)