vue 实现在线预览Excel-LuckyExcel/LuckySheet实现方案

一、准备工作

1. npm安装 luckyexcel
bash 复制代码
npm i -D luckyexcel
2.引入luckysheet

注意:引入luckysheet,只能通过CDN或者直接引入静态资源的形式,不能npm install。

个人建议直接下载资源引入。我给你们提供一个下载资源的地址:

https://gitee.com/ichiva_admin/luckysheet-saved-in-recovery/tree/master/src/main/resources/static/module/luckysheel-2.1.13

直接放进工程的public文件夹下,在index.html中引入一下资源:

html 复制代码
<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>

注意:自行整理下路径,不要错了。

准备工作完毕了。

二、预览Excel

由于后台给到的数据,就是二进制数据。因为他们导出和预览实际上用的是同一个接口。那么,我们需要将二进制数据解析为文件对象,通过luckyexcel的方法转变为json对象,然后通过luckysheet显示出来。

1.准备显示dom
html 复制代码
<div id="luckysheet" style="width: 800px; height: 600px;"> </div>

<!-- 

需要注意两点
1.id 要记住,下边初始化excel会使用容器id;
2.容器的宽高要设置好,否则显示不出来;

 -->
2.请求接口
javascript 复制代码
import axios from 'axios';

// 预览 请求excel二进制数据
axios.get({
    url: '你的后台请求地址',
    params: '参数',
    methods: 'post',
    responseType: 'blob' // 注意  这一步很关键  必须注明请求的数据类型是blob
})
3.解析数据
javascript 复制代码
import LuckyExcel from "luckyexcel";

// 假设我们的请求接口时  getExcelData

// 以下方法是具体处理逻辑

async getExcel () {
    try {
        const res = await getExcelData('你的参数');
        const files = new window.File([res], '你的文件名称', {type:"application/vnd.ms-excel;charset=utf-8"});
        LuckyExcel.transformExcelToLucky(files, exportJson => {
          if (!exportJson.sheets || exportJson.sheets.length === 0) {
            ElMessage.warning('读取excel文件内容失败');
            return;
          }
          // 调用初始化方法
          this.initExcel(exportJson, '你的文件名称');
        }) 
    } catch (err) {

    }
},

// 初始化对象
initExcel (json, title) {
    this.$nextTick(() => {
        // 先销毁 避免反复创建
        luckysheet.destory();

        // 创建表单
        lucky.create({
            container: '你的渲染容器的id', // 比如 <div id="渲染容器的id" style=""></div>
            lang: 'zh', // 中文
            title, // 标题
            data: json.sheets,// excel的sheet数据
        })
    })
},

如上两步,就可以显示项目预览excel的需求了。

相关推荐
zengyuhan50312 分钟前
Windows BLE 开发指南(Rust windows-rs)
前端·rust
醉方休16 分钟前
Webpack loader 的执行机制
前端·webpack·rust
喵个咪16 分钟前
go-kratos-admin 快速上手指南:从环境搭建到启动服务(Windows/macOS/Linux 通用)
vue.js·go
用户8417948145623 分钟前
vxe-gantt table 甘特图如何设置任务视图每一行的背景色
vue.js
前端老宋Running24 分钟前
一次从“卡顿地狱”到“丝般顺滑”的 React 搜索优化实战
前端·react.js·掘金日报
隔壁的大叔24 分钟前
如何自己构建一个Markdown增量渲染器
前端·javascript
用户44455436542626 分钟前
Android的自定义View
前端
WILLF27 分钟前
HTML iframe 标签
前端·javascript
枫,为落叶44 分钟前
Axios使用教程(一)
前端
小章鱼学前端1 小时前
2025 年最新 Fabric.js 实战:一个完整可上线的图片选区标注组件(含全部源码).
前端·vue.js