网站首页 > 博客文章 正文
excel实现在线编辑功能
1、需求描述
在我们正常的工作需求中会遇到需要我们实现在线便捷excel文档的时候,以前大家大部分是根据onlineoffice的免费api实现在线预览,也可以通过onlineoffice的收费接口进行在线编辑功能,现在我们有了另一个选择,就是根据最近开源的luckysheet组件进行在线编辑,但是由于luckysheet是一个前端项目,所以在此我开发了一个集成luckysheet到vue并且将数据存储到后台服务器数据库的项目,项目仓库位置如下git@gitee.com:hdzxy/online-excel.git以下是搭建时候需要注意的要点
2、luchksheet集成方式及注意事项
Luckysheet ,一款纯前端类似excel的在线表格,功能强大、配置简单、完全开源。
集成方式一: CDN
<link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet/dist/plugins/css/pluginsCss.css' />
<link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet/dist/plugins/plugins.css' />
<link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet/dist/css/luckysheet.css' />
<link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet/dist/assets/iconfont/iconfont.css' />
<script src="https://cdn.jsdelivr.net/npm/luckysheet/dist/plugins/js/plugin.js"></script>
<script src="https://cdn.jsdelivr.net/npm/luckysheet/dist/luckysheet.umd.js"></script>
集成方式二:本地引入
<link rel='stylesheet' href='./plugins/css/pluginsCss.css' />
<link rel='stylesheet' href='./plugins/plugins.css' />
<link rel='stylesheet' href='./css/luckysheet.css' />
<link rel='stylesheet' href='./assets/iconfont/iconfont.css' />
<script src="./plugins/js/plugin.js"></script>
<script src="./luckysheet.umd.js"></script>
集成注意事项
1、vue项目中集成需要将Luckysheet引入到index.html中,否则会提示TypeError: luckysheet.create is not a function ,github上问题链接github.com/mengshukeji…
2、本地依赖引入只能在项目根目录,我的项目目录为public根目录下,而且打包后应该为dist目录的根目录一样否则页面会无法显示出sheet窗口
3、如果想要从页面加载外部文件到系统中则需要引入"luckyexcel"依赖,引入位置在package.json文件的dependencies模块中引入
{
"name": "online-excel-web",
"version": "0.1.0",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build"
},
"dependencies": {
"axios": "^0.21.1",
"codemirror": "^5.59.1",
"core-js": "^3.6.5",
"element-ui": "^2.15.0",
"js-yaml": "^4.1.0",
"mockjs": "^1.1.0",
"qs": "^6.10.1",
"vue": "^2.6.11",
"vue-router": "^3.2.0",
"vuex": "^3.6.2",
"yaml": "^2.1.1",
"luckyexcel": "^1.0.0"
},
"devDependencies": {
"@vue/cli-plugin-babel": "~4.5.0",
"@vue/cli-plugin-router": "~4.5.0",
"@vue/cli-plugin-vuex": "~4.5.0",
"@vue/cli-service": "~4.5.0",
"mockjs": "^1.1.0",
"node-sass": "^6.0.1",
"sass": "^1.26.5",
"sass-loader": "^10.2.0",
"vue-template-compiler": "^2.6.11",
"webpack": "^4.0.0"
},
"browserslist": [
"> 1%",
"last 2 versions",
"not dead"
]
}
复制代码
3、服务器后端存储注意事项
表格初始化
<script>
$(function () {
//配置项
var options = {
container: 'luckysheet' ,//luckysheet为容器id
title: 'Luckysheet Demo', // 设定表格名称
lang: 'zh' // 设定表格语言
}
// 初始化表格
luckysheet.create(options)
})
</script>
由于我们需要将文件内容存储到后端服务器的数据库中所以我们需要注意以下几点具体的实现方式大家参考项目代码
1、我们通过luckysheet.getAllSheets() // 得到表的数据,由于数据内容特别长所以数据字段需要设置为longtext字段否则数据存储失败
2、向后台存储数据的时候需要进行json格式化这样数据保存结果就是json字符串,易于我们进行回显展示
saveExcel() {
var objsheet = luckysheet.getAllSheets() // 得到表的数据
console.log("luckysheet======" + luckysheet)
console.log(this.fileName)
console.log(this.id)
var fileContent = JSON.stringify(objsheet);
this.$axios.post("/sys/sysFile/save", Object.assign({
id: this.id,
fileName: this.fileName,
fileContent: fileContent
})).then(res => {
console.log("sucess")
})
}
3、前台回显数据库保存内容的时候我们可以采用loadUrl和非loadUrl获取动态数据
配置loadUrl的地址,Luckysheet会通过ajax请求表格数据,默认载入status为1的sheet数据中的所有data,其余的sheet载入除data字段外的所有字段
前端ajax获取json数据,赋值 options.data
var id = this.selected
console.log("id:" + id)
this.$axios.post("/sys/sysFile/edit", Object.assign({
id: id
})).then(res => {
this.fileName = res.data.data
var options = {
container: 'luckysheet',
showinfobar: false,
lang: 'zh'
}
//返回数据赋值
this.fileName = res.data.data.fileName;
this.id = res.data.data.id
options.data = res.data.data.fileData;
options.title = this.fileName
?
this.isMaskShow = false;
window.luckysheet.destroy();
luckysheet.create(options)
})
后台封装数据需要将数据库中读取的数据转化为jsonarray格式否则展示不出文件内容
@PostMapping("edit")
public Response<SysFileVO> edit(@RequestBody SysFileDTO sysFileDTO){
SysFile sysFile = sysFileService.getById(sysFileDTO.getId());
SysFileVO sysFileVO = new SysFileVO();
BeanUtils.copyBean(sysFile,sysFileVO);
sysFileVO.setFileData(JSONArray.parseArray(sysFile.getFileContent()));
return Response.success(sysFileVO);
}
作者:念尘雨
链接:https://juejin.cn/post/7143930752218955790
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
猜你喜欢
- 2024-12-07 vue3+vite4+element-plus企业级前端框架分享
- 2024-12-07 vue shop vite:一个基于vite4+vue3+element-plus的前端开发平台
- 2024-12-07 利用json-server搭建本地数据接口
- 2024-12-07 【总结】1727- 前端开发中如何高效地模拟数据?
- 2024-12-07 webpack-dev-server介绍及使用详解
- 2024-12-07 HTTP客户端库Axios详细介绍及使用
- 2024-12-07 高配 vue3 setup + vite4 + pinia2 后台管理框架Vite4Admin
- 2024-12-07 手摸手,带你用vue撸后台 系列四(vueAdmin 极简的后台基础模板)
- 2024-12-07 Github标星超200K,这10个可视化面板你知道几个
- 2024-12-07 原创自研uniapp+vite5+pinia2手机版后台OA系统
你 发表评论:
欢迎- 08-03 Docker 命令入门实战:搞懂这些才算真正入门!
- 08-03Docker 常用命令分类汇总
- 08-03docker常用命令大全,看这一篇就够了
- 08-03Docker命令大全详解(39个常用命令)
- 08-03Docker 常用命令手册
- 08-03Docker命令最全详解(39个最常用命令)
- 08-03Docker命令最全详解(29个最常用命令)
- 08-03C++语法进阶-字符:字符变量(char)
- 最近发表
- 标签列表
-
- ifneq (61)
- 字符串长度在线 (61)
- googlecloud (64)
- flutterrun (59)
- powershellfor (73)
- messagesource (71)
- plsql64位 (73)
- vueproxytable (64)
- npminstallsave (63)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- nacos启动失败 (64)
- ssh-add (70)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- qcombobox样式表 (68)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)