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

如何,浏览器,导入,excel,表格,插件 · 浏览次数 : 257

小编点评

**数据表创建方法** 使用designer的setData方法读取bindTree.js文件中的bindSchema(数据表的Json格式)并加载到SpreadJS的页面中。 **具体步骤** 1.调用bindTree.js文件中的generateData方法生成随机数据。 2.使用GC.Spread.Sheets.Bindings.CellBindingSource方法去生成绑定的数据源。 3.将绑定的数据源放到初始化的活动页sheet中。 4.加载数据。 **示例代码** ```typescript 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); } ``` **其他说明** *可以在浏览器中体验和使用在线编辑器了。 *备注:整理的完整源码在源码链接的vue3-spreadJS-ts文件,直接在终端中使用npm run dev指令运行即可。

正文


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

前言 | 问题背景

  作为一名优秀的打工人,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操作)。

备注:

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

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

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

  本文对应的视频教程

总结

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

 

 

更多参考资料:

本文对应的视频教程

表格控件技术资料文档

扩展资料:

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

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

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

 

与如何在浏览器中导入Excel表格插件(下)相似的内容:

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

本文由葡萄城技术团队于博客园原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 前言 | 问题背景 作为一名优秀的打工人,Excel是大家上班中必不可少的办公软件。随着互联网时代的到来,越来越多的公司开始使用各种B/S系统来处理表格数据文件。那么有

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

本文由葡萄城技术团队于博客园原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 前言|问题背景 作为一名优秀的打工人,Excel是大家上班中必不可少的办公软件。随着互联网时代的到来,越来越多的公司开始使用各种B/S系统来处理表格数据文件。那么有没有

如何使用 Blazor 框架在前端浏览器中导入和导出 Excel

摘要:本文由葡萄城技术团队于博客园原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 前言 Blazor 是一个相对较新的框架,用于构建具有 .NET 强大功能的交互式客户端 Web UI。一个常见的用例是将现有的 Excel 文件导入 Blazo

JavaScript 如何验证 URL

前言 当开发者需要为不同目的以不同形式处理URL时,比如说浏览器历史导航,锚点目标,查询参数等等,我们经常会借助于JavaScript。然而,它的频繁使用促使攻击者利用其漏洞。这种被利用的风险是我们必须在我们的JavaScript应用程序中实现URL验证的原因。 URL验证检查URL是否遵循正确的U

[转帖]Jmeter 压测中配置https证书

本文章 主要介绍证书的获取、处理、配置到jmeter中。 1. 获取证书 首先:谷歌浏览器 打开网站,点击 地址栏的锁(表示https),选择 “证书” “隐私、搜索和服务” “管理证书” 点击 上图中的“管理证书”后,打开如下窗口: 在中间的证书列表中找到需要导出的证书,点击“导出”按钮。 在新打

SpringBoot+Selenium模拟用户操作浏览器

Selenium Selenium是一个用于Web应用程序自动化测试的开源工具套件。它主要用于以下目的: 浏览器自动化:Selenium能够模拟真实用户在不同浏览器(如Chrome、Firefox、IE/Edge等)中的交互行为,通过编程方式控制浏览器执行一系列操作,例如点击按钮、填写表单、导航页面

重定向和请求转发

引言 重定向(Redirect)和请求转发(Forward)都是在Web开发中用来处理页面跳转的方式。 重定向 重定向(Redirect)是通过发送特定的HTTP响应来告诉浏览器将请求重定向到另一个URL。当服务器收到一个请求后,如果需要将用户从当前页面导航到另一个页面,可以发送一个重定向响应给浏览

[转帖]Nginx报错404,由于请求处理时间过长

问题复现 近期部门内部有一个应用由于数据量过于庞大,或者说sql优化性能问题,导致查询全量数据时老报错nginx404,后来查看浏览器timing信息,发现其竟然时常达到可怕的2分钟十秒,抛去解决sql优化问题,这里从Nginx端的配置来说如何解决这类问题! 存在的问题 服务器处理请求时间过长,导致

使用 MediaStream Recording API 和 Web Audio API 在浏览器中处理音频(未完待续)

# 使用 MediaStream Recording API 和 Web Audio API 在浏览器中处理音频 ## 1. 背景 最近项目上有个需求,需要实现:录音、回放录音、实现音频可视化效果、上传wav格式的录音等功能。于是乎,我就顺便调研了下如何在浏览器中处理音频,发现 HTML5 中有专门

如何安全地访问互联网

当你深夜在浏览器中输入 www.baidu.com 时有没有想过,除了月黑风高的夜和本机的浏览记录,还有谁知道你访问了它呢?要搞清楚这件事,首先我们要了解一下访问网站时,这其中发生了什么。 如果你在 10 年之前访问网站,大概率会在浏览器的地址栏中看到这样的网址 http://www.baidu.c