找回密码
 立即注册

QQ登录

只需一步,快速开始

Winny

超级版主

141

主题

261

帖子

1682

积分

超级版主

Rank: 8Rank: 8

积分
1682
Winny
超级版主   /  发表于:2023-11-8 15:01  /   查看:1605  /  回复:0
本帖最后由 Winny 于 2023-11-9 13:46 编辑

Ext.JS基于MVC/MVVM架构,可用于桌面和移动应用程序,而不需要为不同平台提供不同的代码。目前SpreadJS官方文档中并没有关于集成ext.js的介绍,本文就集成方式做一个简单探索。
Ext.js也是商用付费控件,集成外部组件时,也可以多向其技术团队咨询,获得最佳集成方法。本文只做简单探索。

步骤一:项目中引入ext.js相关资源
首先,需要将ext.js的相关资源引入工程中。如果你熟悉ext.js,可以采用任何一种常用的集成方式。本文采用cdn的形式,引入ext.js资源。详细代码如下:
  1. <link rel = "stylesheet" type ="text/css" href= "https://cdnjs.cloudflare.com/ajax/libs/extjs/6.0.0/classic/theme-crisp/resources/theme-crisp-all.css" / >
  2.       <script type ="text/javascript" src = "https://cdnjs.cloudflare.com/ajax/libs/extjs/6.0.0/ext-all.js" > </script>
复制代码
步骤二:项目中引入SpreadJS相关资源
SpreadJS作为一款现代的表格控件,支持Vue、React、Angular三种主流框架,也可以在原生的js中集成。官网上,提供了相关的资源包。项目如果使用了npm,也可以通过npm来拉取资源。详细的集成方式可以SpreadJS产品文档
本文为方便演示,采用葡萄城自己的cdn来引入spreadjs相关资源。但该链接可能并不稳定,实际项目中,需要替换成静态资源或者使用其它方式引入。详细代码如下所示:
  1. <link type="text/css" rel="stylesheet" href="https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.1.4/spread-sheets/styles/gc.spread.sheets.excel2013white.css" />
  2.   <link type="text/css" rel="stylesheet" href="https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.1.4/spread-sheets-designer/styles/gc.spread.sheets.designer.min.css" />
  3.   <script src="https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.1.4/spread-sheets/dist/gc.spread.sheets.all.min.js"></script>
  4.   <script src="https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.1.4/spread-sheets-charts/dist/gc.spread.sheets.charts.min.js"></script>
  5.   <script src="https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.1.4/spread-sheets-shapes/dist/gc.spread.sheets.shapes.min.js"></script>
  6.   <script src="https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.1.4/spread-sheets-slicers/dist/gc.spread.sheets.slicers.min.js"></script>
  7.   <script src="https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.1.4/spread-sheets-print/dist/gc.spread.sheets.print.min.js"></script>
  8.   <script src="https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.1.4/spread-sheets-barcode/dist/gc.spread.sheets.barcode.min.js"></script>
  9.   <script src="https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.1.4/spread-sheets-pdf/dist/gc.spread.sheets.pdf.min.js"></script>
  10.   <script src="https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.1.4/spread-sheets-pivot-addon/dist/gc.spread.pivot.pivottables.min.js"></script>
  11.   <script src="https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.1.4/spread-sheets-tablesheet/dist/gc.spread.sheets.tablesheet.min.js"></script>
  12.   <script src="https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.1.4/spread-excelio/dist/gc.spread.excelio.min.js"></script>
  13.   <script src="https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.1.4/spread-sheets-io/dist/gc.spread.sheets.io.min.js"></script>
  14.   <script src="https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.1.4/spread-sheets-resources-zh/dist/gc.spread.sheets.resources.zh.min.js"></script>
  15.   <script src="https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.1.4/spread-sheets-designer-resources-cn/dist/gc.spread.sheets.designer.resource.cn.min.js"></script>
  16.   <script src="https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.1.4/spread-sheets-designer/dist/gc.spread.sheets.designer.all.min.js"></script>
复制代码


步骤三:在ext.js中初始化spreadjs
SpreadJS从组成上可以理解成两部分,分别是组件运行时和在线表格编辑器。组件运行时可以简单理解成项目中只需要引入格子区域,如下所示:
image.png452702330.png
这种多用于用户仅需要填报,不需要单独对填报模板做设计的阶段。详细的集成代码如下所示:

  1. <script type="text/javascript">
  2. Ext.application ({
  3. launch: function() {
  4. let spread = new GC.Spread.Sheets.Workbook('spread-container')
  5. }
  6. });
  7. </script>
  8. <title>Document</title>
  9. ----html部分----
  10. <body>
  11. <div id="spread-container" style="height: 90vh" />
  12. </body>
复制代码
在线表格编辑器可以简单的理解成带工具栏的spreadjs,多用于需要对模版进行设计,或者填报过程中,用户可以更改表结构的场景。具体展示如下所示:
image.png970845031.png
此时,进需要替换ext.js中的launch方法中的初始化代码即可。详细代码如下:
  1. <script type="text/javascript">
  2. Ext.application ({
  3. launch: function() {
  4. let designer = new  GC.Spread.Sheets.Designer.Designer("spread-container")
  5. }
  6. });
  7. </script>
  8. <title>Document</title>
  9. ----html部分----
  10. <body>
  11. <div id="spread-container" style="height: 90vh" />
  12. </body>
复制代码
通过上边简单的步骤,即可完成在ext.js中集成spreadjs。完整的示例代码,可以参考附件html文件。直接打开html文件,即可看到如下的展示效果。
image.png955376281.png


以上是在application中使用的方式,如果需要在panel中注册spreadjs组件,可以采用如下方式:
  1. <script type="text/javascript">
  2.       Ext.onReady(function () {
  3.          var childPanel1 = Ext.create('Ext.Panel', {
  4.              //html: '<div id="ss" style="height: 800px"></div>',
  5.              html: "<div>我是内容,我包含的html可以被执行!<div id='ss' style='height:700px'></div></div>",
  6.              height : 900,
  7.              onRender:function(){
  8.               let designer = new GC.Spread.Sheets.Designer.Designer("ss")
  9.              }
  10.          });

  11.          Ext.create('Ext.panel.Panel', {
  12.          renderTo: Ext.getBody(),
  13.             width: 1200,
  14.             height : 1000,
  15.             border : true,
  16.             frame : true,
  17.             items: childPanel1
  18.          });
  19.       });
  20.    </script>
复制代码



ext-spread.html

3.41 KB, 下载次数: 101

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部