Vue+SpringBoot+SpreadJS 实现的在线文档

Easter79
• 阅读 1390

在线文档,顾名思义就是通过在线的方式对文档进行操作,实现如数据填报、数据计算、可视化、在线导入导出 Excel 文件、自定义系统外观、工具栏、在网页内满足单人或多人编辑并将文件上传至服务端保存的功能。

国内外常见的在线文档,包括:微软Office Online、Google文档、石墨文档、腾讯文档、飞书、语雀等。点击此处,了解这些软件产品的功能对比

Vue+SpringBoot+SpreadJS 实现的在线文档

通过对比这些软件产品,可以将它们的主要功能点,概括为三个层面:数据填报、协同编辑和类Excel的呈现方式。

· 数据填报:支持在线导入导出 Excel、大数据量填报、填报暂存、多 sheet 填报、多级上报

· 协同编辑:支持多人协作、实时编辑、数据同步、多级上报、历史查询

· 类 Excel的呈现方式:提供类Excel的操作模式和使用体验,兼容Excel数据结构

可以说,只要满足了上述需求,就可以开发出一款优秀的在线文档。

而SpreadJS纯前端表格控件,恰好满足。

Vue+SpringBoot+SpreadJS 实现的在线文档

下面,我们就通过代码,演示如何借助 SpreadJS 搭建一款简单的在线文档系统。

在线文档系统截图

该系统集成了SpreadJS表格控件,目前已经实现了在线读取、编辑Excel 文档的功能,文末提供了示例代码下载,大家可以按照 Readme文档中的步骤运行。

PS:欢迎大家前往SpreadJS 产品官网,了解并学习这款纯前端表格组件,以实现更多在线文档的功能。

如下是系统运行截图。

进入页面(File List的展示文件均为服务器上的文件):

Vue+SpringBoot+SpreadJS 实现的在线文档

单击 Excel文件,右侧会显示该文件的详细信息:

Vue+SpringBoot+SpreadJS 实现的在线文档

双击文件夹:

Vue+SpringBoot+SpreadJS 实现的在线文档

点击某个 Excel文件,打开编辑文件的弹框:

Vue+SpringBoot+SpreadJS 实现的在线文档

在线对Excel文件进行修改、删除:

Vue+SpringBoot+SpreadJS 实现的在线文档

技术栈

· 后端:SpringBoot 

· 前端:SpreadJS、Vue、ElementUI、Typescript

关键步骤

实现该系统的相关依赖包都写在package.json里,执行命令 npm install 即可安装,主要有:

 "@grapecity/spread-sheets": "^13.0.5",

 "@grapecity/spread-sheets-resources-zh": "^13.0.5",

 "@grapecity/spread-sheets-vue": "^13.0.5",

 "@grapecity/spread-sheets-pdf": "^13.0.5",

 "@grapecity/spread-sheets-print": "^13.0.5",

 "@grapecity/spread-sheets-charts": "^13.0.5",

 "@grapecity/spread-sheets-shapes": "^13.0.5",

在 SpreadJS.vue文件中引入 SpreadJS 相关安装包:

 import "@grapecity/spread-sheets-vue";

 import * as GC from "@grapecity/spread-sheets";

 import "@grapecity/spread-sheets-charts";

 import "@grapecity/spread-sheets-shapes";

在App.vue文件中引入 SpreadJS 的样式文件、中文资源文件:

 import '@grapecity/spread-sheets-resources-zh'

 import '@grapecity/spread-sheets/styles/gc.spread.sheets.excel2016colorful.css'

List.vue文件中是主要的页面逻辑,双击文件时弹出弹框,弹框中引入了自定义的组件:

 <MySpreadJS :mySpread="mySpread" :filePath="filePath" @done="childDone" :closeSpread='closeSpread'></MySpreadJS>

mySpread变量中是从后台返回的文件流,传给MySpreadJS 组件,子组件接收到数据后,调用excelIO.open方法打开Excel 文件流,

  spreadInitHandle: function(spread) {

 this.spread = spread;

 let self = this;

 let excelIO = new ExcelIO.IO();

 excelIO.open(

 this.spreadblob as Blob,

 function(json) {

 let workbookObj = json;

 self.spread.fromJSON(workbookObj);

 },

 function(e) {

 alert(e.errorMessage);});},

在线编辑Excel文件,并保存。借助excelIO.save方法可以将修改后的文件流传给后台,实现文件的修改功能:

excelIO.save(

 curjson,

 function(fileblob) {

 let formData = new FormData();

 formData.append("filePath", self.filePath);

 formData.append("type", "update");

 formData.append("excelFile", fileblob);

 httpUtils.post("/filemanager/savefile", formData).then(response => {

 self.$message({

 type: "success",

 message: "保存成功!"

 });

 self.$emit("done");

 });},

 function(e) {

 //process error

 console.log(e);});

后台接口介绍

获取某路径下的文件集合:getfolder

Vue+SpringBoot+SpreadJS 实现的在线文档

获取 Excel文件内容:getFile

Vue+SpringBoot+SpreadJS 实现的在线文档

保存文件: savefile

Vue+SpringBoot+SpreadJS 实现的在线文档

删除文件: deletefile

Vue+SpringBoot+SpreadJS 实现的在线文档


以上就是Vue+SpringBoot+SpreadJS 实现的一个简单的在线文档,如需了解详细的实现步骤,请下载示例代码

SpreadJS除提供示例中在线读取、编辑Excel 文档的功能外,还提供了Web Excel 组件开发、数据填报、Excel 类报表设计等功能。除此之外,您还可通过调用API对SpreadJS进一步扩展,满足协同编辑、多级上报、填报暂存等更多场景的业务需要,欢迎前往SpreadJS 产品官网,下载试用。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Android So动态加载 优雅实现与原理分析
背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
linbojue linbojue
8个月前
java 实现onlyoffice在线编辑
Java实现OnlyOffice在线编辑简介OnlyOffice是一款优秀的在线文档编辑工具,支持文档、表格、演示等多种类型的文件编辑。本文将介绍如何使用Java实现OnlyOffice在线编辑功能,为用户提供更加便捷的文档编辑体验。实现步骤步骤一:搭建后
Easter79
Easter79
Lv1
今生可爱与温柔,每一样都不能少。
文章
2.8k
粉丝
5
获赞
1.2k