网站首页 > 技术教程 正文
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-14 一款纯前端类似excel的在线表格
- 2024-12-14 办公不求人,4个Excel表格操作技巧
- 2024-12-14 系统开发内嵌 “在线Excel” 教程 (4) – 条件格式
- 2024-12-14 推荐五个实用Excel学习网站,值得收藏!
- 2024-12-14 如何从0到1进行KANO模型分析
- 2024-12-14 Excel小知识 Excel在线接单中 滴滴
- 2024-12-14 免费企业级网盘开启Office在线协作教程
- 2024-12-14 最新版Excel都没有的6个功能,这个在线工具居然轻松做到了
- 2024-12-14 Luckysheet ,开源纯前端类excel在线表格
- 2024-12-14 办公小技巧:不用Excel 在线制作漂亮3D图表
你 发表评论:
欢迎- 05-24初学电脑的几个误区,这几个方法可能能帮助到你
- 05-2410 分钟入门计算机基础
- 05-240 基础学电脑,从哪儿开始,跟着我一步步走
- 05-24电脑怎么入门?这6条基本操作知识,帮助你快速轻松入门
- 05-24电脑基础知识,硬件故障的诊断步骤
- 05-245分钟认识电脑各个部件及作用,出现问题排查有方向
- 05-24电脑DIY装机 必备的基础知识(详细图文)
- 05-24不知道现在的学生会不会学习电脑的基本操作?
- 最近发表
- 标签列表
-
- sd分区 (65)
- raid5数据恢复 (81)
- 地址转换 (73)
- 手机存储卡根目录 (55)
- tcp端口 (74)
- project server (59)
- 双击ctrl (55)
- 鼠标 单击变双击 (67)
- debugview (59)
- 字符动画 (65)
- flushdns (57)
- ps复制快捷键 (57)
- 清除系统垃圾代码 (58)
- web服务器的架设 (67)
- 16进制转换 (69)
- xclient (55)
- ps源文件 (67)
- filezilla server (59)
- 句柄无效 (56)
- word页眉页脚设置 (59)
- ansys实例 (56)
- 6 1 3固件 (59)
- sqlserver2000挂起 (59)
- vm虚拟主机 (55)
- config (61)
本文暂时没有评论,来添加一个吧(●'◡'●)