vue項目使用luckyexcel預(yù)覽excel表格功能(心路歷程)
場景
最近工作中在開發(fā)文檔上傳并能在新窗口打開預(yù)覽的功能。在此記錄下心路歷程。
方法
我總共嘗試了2種方法預(yù)覽excel,均可實現(xiàn)。還發(fā)現(xiàn)一種方法可以實現(xiàn),需要后端配合,叫做KKfileview。
1.使用luckyexcel插件實現(xiàn)xlsx的預(yù)覽
2.使用file-viewer插件實現(xiàn)xlsx的預(yù)覽
3.使用KKfileview插件實現(xiàn)xlsx的預(yù)覽
實現(xiàn)
方法一:使用luckyexcel插件
溫馨提示:需要用到luckysheet和luckyexcel,根據(jù)下面步驟一步一步操作會避免踩坑,比如我當(dāng)時遇到了window.luckysheet is not defined控制臺報紅的問題。
第一步:vue項目引入luckysheet的相關(guān)依賴(這也是上面提到的如果沒有引入會報紅window.luckysheet找不到的問題)
public文件夾下的index.html里引入luckysheet的相關(guān)依賴,由于考慮到我所做的這個項目可能會內(nèi)網(wǎng)部署,所以將這些依賴包放在了public文件夾下的static文件夾里新建了一個luckysheet文件夾,這些依賴包的來源是我先npm install luckysheet --save把包拉下來,然后去拷貝的。文件存放位置和引入代碼如下圖。當(dāng)然也可以選擇cdn引入的方式。

<link rel='stylesheet' href='./static/luckysheet/plugins/css/pluginsCss.css' /> <link rel='stylesheet' href='./static/luckysheet/plugins/plugins.css' /> <link rel='stylesheet' href='./static/luckysheet/css/luckysheet.css' /> <link rel='stylesheet' href='./static/luckysheet/assets/iconfont/iconfont.css' /> <script src="./static/luckysheet/plugins/js/plugin.js"></script> <script src="./static/luckysheet/luckysheet.umd.js"></script>
第二步:安裝luckyexcel
npm install luckyexcel --save
第三步:新窗口打開,所以新窗口的vue文件中引入luckyexcel并處理邏輯 html部分
這里需要注意id要寫上,后面渲染要用到,還有重要的一點是style的樣式要寫,一開始沒有寫發(fā)現(xiàn)文件已經(jīng)讀取成功,但是頁面上沒有顯示出來。
<template>
<div>
<div v-if="fileType === 'xlsx'" id="luckysheet" style="margin:0px;padding:0px;width:100%;height:100vh;" />
</div>
</template>js部分
import LuckyExcel from 'luckyexcel'; // 引入
// mounted生命周期
mounted() {
// 從路由地址中獲取fileUrl,fileType
this.fileUrl = this.$route.query.fileUrl ? this.$route.query.fileUrl : null
this.fileType = this.$route.query.fileType ? this.$route.query.fileType : null
if (this.fileUrl == null) {
this.$message({
type: 'error',
message: '文件地址無效,請刷新后重試'
})
}
// 加載文件內(nèi)容
this.uploading(this.fileUrl)
}
// methods方法
methods: {
// 加載文件內(nèi)容
uploading(file) {
// downloadFileXLS是接口,fileKey傳的是文件地址,調(diào)接口獲取文件流
downloadFileXLS({fileKey: file}).then(res => {
if(this.fileType === 'xlsx') {
// 預(yù)覽xlsx
this.displayResult(res)
} else if(this.fileType === 'pptx') {
// 預(yù)覽pptx,可忽略,該篇文章不涉及pptx的預(yù)覽
this.previewPptx(res)
}
})
},
displayResult(buffer) {
// 得到xlsx文件流后
LuckyExcel.transformExcelToLucky(
buffer,
function(exportJson, luckysheetfile){
// console.log(exportJson);
// console.log(luckysheetfile);
if (exportJson.sheets == null || exportJson.sheets.length == 0) {
alert("文件讀取失敗!");
return;
}
// 銷毀原來的表格
window.luckysheet.destroy();
// 重新創(chuàng)建新表格
window.luckysheet.create({
container: 'luckysheet', // 設(shè)定DOM容器的id
showtoolbar: false, // 是否顯示工具欄
showinfobar: false, // 是否顯示頂部信息欄
showstatisticBar: false, // 是否顯示底部計數(shù)欄
sheetBottomConfig: false, // sheet頁下方的添加行按鈕和回到頂部按鈕配置
allowEdit: false, // 是否允許前臺編輯
enableAddRow: false, // 是否允許增加行
enableAddCol: false, // 是否允許增加列
sheetFormulaBar: false, // 是否顯示公式欄
enableAddBackTop: false, //返回頭部按鈕
data: exportJson.sheets, //表格內(nèi)容
title: exportJson.info.name //表格標(biāo)題
});
},
function(error){
// 如果拋出任何錯誤,則處理錯誤
}
)
}
}新窗口打開預(yù)覽xlsx,我是使用的如下方法跳轉(zhuǎn)到要預(yù)覽的頁面的路由(第三步的代碼就是預(yù)覽頁面的),帶上了參數(shù)。
// 獲取目標(biāo)路由地址
const routeUrl = this.$router.resolve({
name: 'OfficeView',
query: {
fileUrl: item.fileKey,
fileType: item.type
}
})
// 打開新標(biāo)簽頁
window.open(routeUrl.href, '_blank')方法二:使用file-viewer實現(xiàn)excel的預(yù)覽
點下面鏈接可以查看哦
vue項目預(yù)覽excel表格(file-viewer插件)
到此這篇關(guān)于vue項目使用luckyexcel預(yù)覽excel表格的文章就介紹到這了,更多相關(guān)vue 預(yù)覽excel表格內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- vue2.0 + element UI 中 el-table 數(shù)據(jù)導(dǎo)出Excel的方法
- vue項目預(yù)覽excel表格功能(file-viewer插件)
- Vue3實現(xiàn)動態(tài)導(dǎo)入Excel表格數(shù)據(jù)的方法詳解
- 使用SpringBoot+EasyExcel+Vue實現(xiàn)excel表格的導(dǎo)入和導(dǎo)出詳解
- vue使用axios導(dǎo)出后臺返回的文件流為excel表格詳解
- vue項目中常見的三種文件類型在線預(yù)覽實現(xiàn)(pdf/word/excel表格)
- vue中el-table前端如何導(dǎo)出excel數(shù)據(jù)表格
相關(guān)文章
mpvue實現(xiàn)左側(cè)導(dǎo)航與右側(cè)內(nèi)容的聯(lián)動
這篇文章主要為大家詳細(xì)介紹了mpvue實現(xiàn)左側(cè)導(dǎo)航與右側(cè)內(nèi)容的聯(lián)動,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-10-10
vite結(jié)合electron構(gòu)建前端桌面應(yīng)用程序
本文主要介紹了vite結(jié)合electron構(gòu)建前端桌面應(yīng)用程序,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05
vue-resource 攔截器(interceptor)的使用詳解
本篇文章主要介紹了vue-resource 攔截器(interceptor)的使用詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07

