在线编辑excel文件实现服务器后台存储,及页面还原

这篇博客介绍了如何在Vue项目中集成开源组件Luckysheet实现Excel在线编辑功能,并将数据存储到后端服务器数据库。通过CDN或本地引入的方式集成Luckysheet,注意在Vue项目中的特殊处理。利用'luckyexcel'库处理数据存储和回显,确保数据格式正确。同时,提供了前端向后台发送请求保存和加载Excel数据的示例代码。
摘要由CSDN通过智能技术生成

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上问题链接https://github.com/mengshukeji/luckysheet-vue/issues/8

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);
    }
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 在 Java Web 应用程序中实现在线编辑 Excel 文件,需要使用 Apache POI 库。 Apache POI 是一个开源的 Java 库,可以用来操作 Microsoft Office 文件格式,包括 Excel、Word 和 PowerPoint。它可以让你在 Java Web 应用程序中读写 Excel 文件,并且能够在线编辑这些文件。 要实现在线编辑 Excel 文件,需要在服务器端读取 Excel 文件,然后将数据加载到页面中的表格中。用户可以在表格中修改数据,然后点击提交按钮将修改的数据保存到服务器端的 Excel 文件中。 下面是使用 Apache POI 库实现在线编辑 Excel 文件的简单步骤: 1. 在项目中添加 Apache POI 依赖。 2. 使用 Apache POI 的 Workbook 类读取 Excel 文件。 3. 使用 Apache POI 的 Sheet 类读取 Excel 文件中的工作表。 4. 使用 Apache POI 的 Row 和 Cell 类读取 Excel 文件中的行和单元格。 5. 将读取的数据加载到页面中的表格中。 6. 当用户修改表格中的数据并提交时,使用 Apache POI 的 Workbook 类将修改后的数据写回 Excel 文件。 希望这些信息能帮助你。如果你还有其他问题,请随时追问。 ### 回答2: JavaWeb实现在线编辑Excel通过以下步骤完成: 1. 引入Apache POI库:Apache POI是Java操作Microsoft Office格式文档的开源库。在项目中引入Apache POI相关的JAR包。 2. 添加上传功能:在网页中添加上传Excel文件的表单,使用表单上传组件(如Apache Commons FileUpload或SpringMVC提供的MultipartFile)获取上传的文件。 3. 解析Excel文件:使用POI库的API解析上传的Excel文件。可以根据需求选择使用HSSFWorkbook(操作.xls格式)或XSSFWorkbook(操作.xlsx格式)来读取Excel文件。 4. 显示Excel内容:解析Excel文件后,可以将数据存储在Java对象中,然后使用JavaServer Pages(JSP)或Thymeleaf等模板引擎技术将数据渲染在网页中显示。 5. 实现在线编辑功能:在网页中添加编辑Excel的表单,包括输入框、下拉框等控件。通过处理用户的输入,可以更新Java对象中的数据。 6. 更新Excel文件:根据用户的编辑操作,使用POI库的API更新Java对象中的数据。然后将更新后的数据保存回Excel文件中。 7. 下载更新的Excel文件:将更新后的Excel文件提供给用户下载。可以通过设置响应头的Content-Disposition属性来实现文件下载。 8. 错误处理与异常处理:在实现过程中,需要处理可能出现的错误和异常情况,例如上传文件格式不正确、解析Excel文件失败等,提供相应的提示信息或错误处理页面。 以上是使用JavaWeb实现在线编辑Excel的大致流程。通过这种方式,用户可以直接在网页中编辑Excel文件,方便快捷地进行数据处理和更新。 ### 回答3: JavaWeb 实现在线编辑 Excel 可以通过以下步骤实现: 1. 创建一个 Java Web 项目,可以使用 Maven 构建工具简化项目的管理。 2. 导入 Apache POI 库,该库提供了操作 Excel 的功能,可以通过 Maven 或手动下载添加到项目中。 3. 在项目中创建一个用于处理 Excel 的 Servlet,该 Servlet 用于接收并处理前端发送的请求。 4. 前端可以通过表单提交 Excel 文件,或者通过 AJAX 发送 Excel 数据给后端 Servlet 进行处理。 5. 在 Servlet 中,可以使用 POI 库来读取 Excel 文件的内容,或者根据前端传递的数据生成新的 Excel 文件。 6. Servlet 处理完后,将生成的 Excel 文件返回给前端,可以使用响应流输出 Excel 文件。 7. 在前端,可以使用 JavaScript 或其他前端框架来处理接收到的 Excel 文件,例如展示、编辑等。 需要注意的是,由于 Excel 文件的格式复杂,所以在使用 POI 进行操作时需要了解如何读取和操作 Excel 文件的结构和规则。同时,在处理大型 Excel 文件时可能会引起性能问题,所以可以考虑使用缓存、分页等优化技术来提高性能。 另外,为了确保系统的安全性,建议在上传 Excel 文件时进行文件类型和大小的验证,以防止恶意文件的上传和系统资源的耗尽。 总之,通过 JavaWeb 和 Apache POI 库的结合,可以实现在线编辑 Excel 的功能,方便用户在浏览器中直接进行 Excel 数据的修改和操作。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值