Vue实现在线编辑excel

目录

luckysheet

1.插件引入

2.声明excel在线预览编辑组件

3.excelJs分解Dom为excel文件流

luckysheet文档地址

exceljs文档地址


前言介绍:原先平台没有要求在线编辑excel功能,excel文件是表单新增记录展现表格信息的一条记录信息,用于展示excel文件名称,支持下载功能,后续可能是客户嫌弃文件下载网速过慢,所以要求支持在线预览和编辑功能。项目周会讨论时提到这个需求,我当时的第一反应是这个功能前端来做的话,从18年开始网上生态情况,开源插件很少,功能支持完善较好的似乎都是收费的,所以当时会议就说明,实现这个功能就两种情况,公司对这个项目平台能不能支持收费插件,不能的话只能做网上找开源做阉割版。后续讨论,对这个功能采取使用不收费的插件。

_,那能怎么办,作为开发那就是搬轮子造轮子呗,网上文档查询一波,发现2021了关于这方面的技术方案和开源插件都友好很多,_点进来的小伙伴如果公司支持收费插件的话,可以试试这几个方案

wpsJs石墨文档腾讯文档、__spreedJs


luckysheet

官方示例项目地址 :Luckysheet: ??Luckysheet ,一款纯前端类似excel的在线表格,功能强大、配置简单、完全开源。

这里后面我就直接贴代码了,因为前言时说了,在线编辑预览是新增功能,所以花费时间和改动地方越少越好,原先excel文件导出功能是后台java根据模板接口返回文件流,然后前端转换二进制Blob数据对象导出的,这里功能接入就前端做下改动,没要求后端跟着同步照着luckysheet官方给出的方案做在线编辑功能。

1.插件引入

Vue引入luckysheet,index.html头部标签head中引入

<link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/[email protected]/dist/plugins/css/pluginsCss.css' />
    <link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/[email protected]/dist/plugins/plugins.css' />
    <link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/[email protected]/dist/css/luckysheet.css' />
    <link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/[email protected]/dist/assets/iconfont/iconfont.css' />
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/plugins/js/plugin.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/luckysheet.umd.js"></script>

然后package.json中添加两项依赖

"exceljs": "^4.2.0",
"luckyexcel": "^1.0.0",

2.声明excel在线预览编辑组件

<template>
  <div class="onlineExcel">
    <el-card block fill shadow="never" :body-style="{ height: '100%' }">
      <div class="fill flex-column">
        <!-- 自定义操作栏 -->
        <div class="flex-h fn-flex mar-b-xs">
          <div class="fn-header__btn text-left">
            <el-button
              type="primary"
              :disabled='this.fileurl.length === 0'
              @click="SaveExcel"
              >保存
            </el-button>
          </div>
        </div>
        <div
          id="luckysheet"
          class="flex-1 "
        ></div>
      </div>
    </el-card>
  </div>
</template>

<script>
import LuckyExcel from 'luckyexcel';
import { uploadDoc, downloadDoc } from '@/api/doc';
import 
### 使用 Vue 实现 Excel 在线编辑 #### 插件选择与安装 对于希望在 Vue 应用程序中集成 Excel 编辑功能的开发者来说,`vue3-excel-editor` 提供了一种便捷的方式[^1]。此插件专为 Vue 3 设计,允许用户以类似于 Excel 的方式查看和修改对象数组。 为了开始使用 `vue3-excel-editor`,需先通过 npm 或 yarn 安装该包: ```bash npm install vue3-excel-editor ``` 或者 ```bash yarn add vue3-excel-editor ``` #### 基本使用方法 一旦完成安装,在组件内部引入并注册这个插件即可轻松创建一个具备基本功能的数据表单视图。下面是一个简单的例子展示了如何初始化以及渲染带有默认设置的表格控件: ```html <template> <div id="app"> <!-- 创建 excel editor 组件 --> <excel-editor v-model="data" /> </div> </template> <script setup lang="ts"> import { ref } from 'vue'; // 导入 excel-editor 组件 import ExcelEditor from 'vue3-excel-editor'; const data = ref([ { name: "John Doe", age: 28, city: "New York" }, ]); </script> ``` 这段代码片段定义了一个包含姓名、年龄及城市字段的对象列表作为初始数据源,并将其绑定到了 `<excel-editor>` 元素上。当页面加载完毕后,浏览器会呈现一张可以交互操作的小型电子表格。 除了上述基础特性外,`vue3-excel-editor` 还提供了更多高级选项,比如自定义样式主题、调整列宽高、启用单元格合并等。这些增强特性能让开发人员更加灵活地定制满足特定业务场景下的需求。 另外一种方案则是采用 Luckysheet[^5],这是一款专注于提供全面而强大的在线表格体验的产品。它不仅限于读写本地文件,还支持实时协作编辑模式,非常适合多人共同工作的环境。其文档详尽记录了 API 接口调用指南和技术细节,方便有兴趣深入了解的朋友查阅学习。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值