找回密码
 立即注册

QQ登录

只需一步,快速开始

dexteryao 讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-8-31 12:11  /   查看:6438  /  回复:10
本帖最后由 dexteryao 于 2020-8-31 12:14 编辑

SpreadJS组件化(新)表格编辑器开发接近尾声,已经有部分受邀客户拿到了预览版,具体使用可参考组件化(新)表格编辑器预览版常见问题集合贴
接下来,通过示例介绍使用SpreadJS组件化表格编辑器和GCExcel(服务端表格组件)快速构建一个简单报表系统。
整个系统将实现如下功能
1. 在线Excel报表设计。快速集成SpreadJS编辑器,实现纯前端在线Excel功能
image.png286806029.png


2. 自定义编辑器工具栏,实现模板文件上传加载。加载文件直接表格中展示,点击加载
image.png867850952.png

3. 通过GCExcel模板功能,绑定数据生成报表。前端设计模板,服务端绑定数据返回前端展示。实时切换预览
image.png212966918.png
image.png329194030.png

4. 导出PDF。可导出所有sheet页或当前Sheet
image.png695005798.png

运行环境
1. SpreadJS V13
2. 组件化设计器预览版
3. GCExcel 3.2
4. Spring Boot 2.3.2

整个系统实践分为三期,本期将搭建项目集成SpreadJS系列组件
1. 项目搭建,同时使用IntelliJ IDEA的Spring Assistant 组件新建Spring Boot Web项目。
根据提示,选择web项目下一步即可。
image.png877669982.png

在resources/application.propertyies中配置
项目端口号8088
上传不限制文件大小
  1. server.port=8088
复制代码



2. 添加MVC
pom.xml中添加 thymeleaf 模板引擎
  1. <dependency>
  2.     <groupId>org.springframework.boot</groupId>
  3.     <artifactId>spring-boot-starter-thymeleaf</artifactId>
  4.                 </dependency>
复制代码
resources中添加index.html模板
添加IndexController
image.png245415038.png
  1. @Controller
  2. @RequestMapping({"/", "Home"})
  3. public class IndexController {

  4.     @RequestMapping("/")
  5.     public String index(Model model) {
  6.         return "index";
  7.     }

  8. }
复制代码


3. 集成SpreadJS 组件化编辑器
将spreadJS资源和组件化设计器资源放入static文件夹中,在index.html 页面引入
  1. <link href="lib/spreadjs/css/gc.spread.sheets.excel2016colorful.13.2.0.css" rel="stylesheet" type="text/css"/>
  2.     <link href="lib/spreadjs/designer/css/gc.spread.sheets.designer.0.0.0.min.css" rel="stylesheet" type="text/css"/>
复制代码
引入所有JS资源,现引入SpreadJS资源,包括ExcelIO和plugsin中资源
  1. <script src="lib/spreadjs/scripts/gc.spread.sheets.all.13.2.0.min.js" type="text/javascript"></script>
  2.     <script src="lib/spreadjs/scripts/interop/gc.spread.excelio.13.2.0.min.js" type="text/javascript"></script>
  3.     <script src="lib/spreadjs/scripts/plugins/gc.spread.sheets.print.13.2.0.min.js" type="text/javascript"></script>
  4.     <script src="lib/spreadjs/scripts/plugins/gc.spread.sheets.pdf.13.2.0.min.js" type="text/javascript"></script>
  5.     <script src="lib/spreadjs/scripts/plugins/gc.spread.sheets.charts.13.2.0.min.js" type="text/javascript"></script>
  6.     <script src="lib/spreadjs/scripts/plugins/gc.spread.sheets.shapes.13.2.0.min.js" type="text/javascript"></script>
复制代码


index页面中添加ssDesigner,作为编辑器Host,
  1. <body>
  2. <section><h1>Welcome to SpreadJS World!</h1></section>
  3. <section class="designerContainer">
  4.     <aside class="designerAside">
  5.         <div style="width:180px">Aside</div>
  6.     </aside>
  7.     <main class="designerMain">
  8.         <div id="ssDesigner" class="designerHost"></div>
  9.         <input type="file" id="ribbon_file_selector" name="file" style="display:none"/>
  10.     </main>
  11. </section>
  12. </body>
复制代码
自定义页面style.css
  1. <link href="style.css" rel="stylesheet" type="text/css"/>
复制代码

  1. html, body{
  2.       height: 100%;
  3.       margin: 0;
  4.     }
  5.     h1 {
  6.       font-family: Avenir, Helvetica, Arial, sans-serif;
  7.       text-align: center;
  8.       color: #2c3e50;
  9.       margin-block-start: 0;
  10.       padding: 15px;
  11.     }
  12.     .designerContainer{
  13.       width: CALC(100% - 20px);
  14.       height: CALC(100% - 120px);
  15.       padding: 10px;
  16.       display: flex;
  17.     }
  18.     .designerAside{
  19.       width: 180px;
  20.       height: 100%;
  21.       text-align: center;
  22.       background: gold;
  23.     }
  24.     .designerMain{
  25.       height: 100%;
  26.       flex: 0 100%;
  27.       padding: 0 0 0 10px;
  28.     }
  29.     .designerHost{
  30.       width: 100%;
  31.       height: 100%;
  32.     }
复制代码
新建static中index.js 设置中文环境并,初始化编辑器
  1. var designer
  2. window.onload = function () {
  3.     GC.Spread.Common.CultureManager.culture("zh-cn");
  4.     designer = <blockquote>designer = new GC.Spread.Sheets.Designer.Designer(
复制代码


运行项目,进入http://localhost:8088/ 体验在线Excel

10 个回复

倒序浏览
Huiju2017
注册会员   /  发表于:2021-5-24 11:43:14
沙发
使用SpreadJS和GCExcel构建在线Excel报表系统,有样例源码压缩包,可以下载吗?
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-5-24 11:47:05
板凳
Huiju2017 发表于 2021-5-24 11:43
使用SpreadJS和GCExcel构建在线Excel报表系统,有样例源码压缩包,可以下载吗?

您可以参考这个demo

spreadjs-world-main.zip

3.6 MB, 下载次数: 612

回复 使用道具 举报
Huiju2017
注册会员   /  发表于:2021-6-4 10:25:03
地板
Derrick.Jiao 发表于 2021-5-24 11:47
您可以参考这个demo

多谢。
这个demo是从github上获取的吗?
有github的链接吗?
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-6-4 10:29:14
6#
Huiju2017 发表于 2021-6-4 10:25
多谢。
这个demo是从github上获取的吗?
有github的链接吗?

不用客气,这个demo的git地址是内部的,没有对外公开。
回复 使用道具 举报
Huiju2017
注册会员   /  发表于:2021-6-4 12:00:21
7#
Derrick.Jiao 发表于 2021-6-4 10:29
不用客气,这个demo的git地址是内部的,没有对外公开。

好的,多谢指教。
这个demo能单独用tomcat启动运行查看效果吗?
是否是只给我代码用于参考,不能独立运行查看效果?
这个demo中,只有【src】和【pom.xml】对我有用,对吧?
这个demo用的是idea哪个版本开发的?
没有【spreadjsworld.iml】文件,是压缩前删掉了吗?
其中,【mvnw.cmd】和【mvnw】是和maven相关,对吧?不需要我执行吧?
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-6-4 12:07:04
8#
Huiju2017 发表于 2021-6-4 12:00
好的,多谢指教。
这个demo能单独用tomcat启动运行查看效果吗?
是否是只给我代码用于参考,不能独立运 ...

参考下面的配置,运行项目,然后访问控制台的端口就可以了。
image.png93899840.png
回复 使用道具 举报
Huiju2017
注册会员   /  发表于:2021-6-4 16:47:47
9#
Derrick.Jiao 发表于 2021-6-4 12:07
参考下面的配置,运行项目,然后访问控制台的端口就可以了。

我看pom.xml文件中指定的是java版本11,是必须用这个版本的jdk编译吗?
我本机的jdk1.8和jdk1.7可以用于编译这个demo吗?
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-6-4 16:48:51
10#
Huiju2017 发表于 2021-6-4 16:47
我看pom.xml文件中指定的是java版本11,是必须用这个版本的jdk编译吗?
我本机的jdk1.8和jdk1.7可以用于 ...

这个版本没有影响,建议使用1.8。
回复 使用道具 举报
Huiju2017
注册会员   /  发表于:2021-6-4 17:08:56
11#
Derrick.Jiao 发表于 2021-6-4 16:48
这个版本没有影响,建议使用1.8。

image.png226320799.png
我改成jdk1.8后,编译显示异常,是否是demo中的某些代码,只能适用于jdk11,才导致出问题的?
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部