如何在浏览器中导入Excel表格插件

2023-09-21 09:15:00

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

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

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

       Vue集成在线表格编辑器和SpreadJS的方法相似,首先引入需要集成到Vue中的资源,其次使用styleInfo标签和designerInitialized设置表格的大小。

 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操作)。 

备注:

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

  源码链接:https://gitee.com/GrapeCity/SpreadJS__20230605xia (Gitee)

       https://github.com/GrapeCityXA/SpreadJSBiaoGEcHAJianXia  (Github)

更多推荐

2024字节跳动校招面试真题汇总及其解答(四)

12.Java的类加载机制Java的类加载机制是指将描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程被称作虚拟机的类加载机制。类的加载过程分为以下五个阶段:加载:将Class文件从磁盘读入内存,并将其放在方法区中。验证:对Class文件进行

ExcelServer EXCEL服务器使用- 用户、角色权限配置

Excel文件服务器搭建搭建Excel服务器1、登录默认用户名Admin密码32、角色管理添加修改角色角色配置在系统管理->角色.fexm文件夹下可以像修改excel文件一样修改角色3、用户管理添加修改用户用户的修改在系统管理->用户.fexm可以像excel一样编辑用户,注意不要删除列角色编号内容需要与上述角色内容一

Map面试常见问题

Map的特点有哪些?Java中的Map是一种接口,它表示一种将键映射到值的对象。Map的特点主要有以下几点:键的唯一性:每个键在Map中只能出现一次,不能重复。不保证键的顺序:Map不保证键的插入顺序或者遍历顺序。例如,HashMap在迭代时键的顺序与插入顺序可能不一致。可以为null的键和值:Map允许使用null作

语义分割——灰度图像转伪彩色图像

目录检验灰度图检验代码灰度图转伪彩色图代码转换代码使用细则示例转换结果总结检验灰度图制作语义分割数据集或用训练好模型测试图像时,得到的结果是灰度图像,如下:检验代码上面图像灰度值不是全是全为0,灰度范围在[0,1]之间,使用下面脚本测试灰度图像的灰度值是否全为0:importcv2img=cv2.imread("out

【面试题精讲】说一说springboot加载配置文件优先级

有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top首发博客地址文章更新计划系列文章地址SpringBoot加载配置文件的优先级是根据不同的位置和命名规则来确定的。下面按照优先级从高到低的顺序来介绍:命令行参数:通过命令行参数指定的配置会覆盖其他配置

python与mongodb交互-->pymongo

frompymongoimportMongoClient#创建数据库连接对象client=MongoClient('ip',27017)#选择一个数据库db=client['admin']db.authenticate('python','python')#选择一个集合col=client['pydata']['tes

BroadcastChannel方法跨浏览器窗口通信

1.描述同源的不同浏览器窗口,Tab页,frame或者iframe下的不同文档之间可以通过BroadcastChannel相互通信。2.构造函数通过BroadcastChannel类传入的参数创建实例,传入的参数将指定通道名称,在同源环境下该通道可以相互通信,一个名称只对应一个通道。//将创建的实例挂载到window上

Elasticsearch 快速开始

Elasticsearch是一个分布式的RESTful风格的搜索和数据分析引擎。查询:Elasticsearch允许执行和合并多种类型的搜索—结构化、非结构化、地理位置、度量指标—搜索方式随心而变。分析:找到与查询最匹配的十个文档是一回事。但是如果面对的是十亿行日志,又该如何解读呢?Elasticsearch聚合让您能

AIGC生态,引领社会、行业、个体的翻天覆地变革

1879年,当爱迪生成功地实验出能够持续发光的灯丝时,他迎来了一个新的挑战:如何让更多人能够享受到电力的便利?经过艰难探索,直到1882年9月,在曼哈顿的珍珠街上,爱迪生才铺设了世界上第一张电力网络,为普罗大众提供了电力。正由此,第二次工业革命的幕布才得以徐徐打开。每当一项重大技术突破出现时,人类都不得不思考如何将其普

MT6785(Helio G95)安卓核心板_联发科4G高能低耗安卓主板开发板

MTK6785(HelioG95)安卓核心板采用八核CPU具有两个强大的ArmCortex-A76处理器内核,主频高达2.05GHz,外加六个Cortex-A55高效处理器。其强大的图形性能由ArmMali-G76MC4提供,速度可提升至900MHz。高达10GB的2133MHz的LPDDR4X提供了充足的带宽,同时支

HarmonyOS开发:那些开发中常见的问题汇总(一)

前言本来这篇文章需要讲述静态共享包如何实现远程依赖和上传以及关于静态共享包私服的搭建,非常遗憾的告诉大家,由于组织管理申请迟迟未通过,和部分文档官方权限暂未开放,关于这方面的讲解需要延后了,大概需要等到2024年第一季度,也就是来年,毕竟关于HarmonyOS的升级,舍弃AOSP,也是在2024年第一季度才会面向所有开

热文推荐