vue項(xiàng)目使用luckyexcel預(yù)覽excel表格功能(心路歷程)
場(chǎng)景
最近工作中在開(kāi)發(fā)文檔上傳并能在新窗口打開(kāi)預(yù)覽的功能。在此記錄下心路歷程。
方法
我總共嘗試了2種方法預(yù)覽excel,均可實(shí)現(xiàn)。還發(fā)現(xiàn)一種方法可以實(shí)現(xiàn),需要后端配合,叫做KKfileview。
1.使用luckyexcel插件實(shí)現(xiàn)xlsx的預(yù)覽
2.使用file-viewer插件實(shí)現(xiàn)xlsx的預(yù)覽
3.使用KKfileview插件實(shí)現(xiàn)xlsx的預(yù)覽
實(shí)現(xiàn)
方法一:使用luckyexcel插件
溫馨提示:需要用到luckysheet和luckyexcel,根據(jù)下面步驟一步一步操作會(huì)避免踩坑,比如我當(dāng)時(shí)遇到了window.luckysheet is not defined控制臺(tái)報(bào)紅的問(wèn)題。
第一步:vue項(xiàng)目引入luckysheet的相關(guān)依賴(這也是上面提到的如果沒(méi)有引入會(huì)報(bào)紅window.luckysheet找不到的問(wèn)題)
public文件夾下的index.html里引入luckysheet的相關(guān)依賴,由于考慮到我所做的這個(gè)項(xiàng)目可能會(huì)內(nèi)網(wǎng)部署,所以將這些依賴包放在了public文件夾下的static文件夾里新建了一個(gè)luckysheet文件夾,這些依賴包的來(lái)源是我先npm install luckysheet --save把包拉下來(lái),然后去拷貝的。文件存放位置和引入代碼如下圖。當(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
第三步:新窗口打開(kāi),所以新窗口的vue文件中引入luckyexcel并處理邏輯 html部分
這里需要注意id要寫上,后面渲染要用到,還有重要的一點(diǎn)是style的樣式要寫,一開(kāi)始沒(méi)有寫發(fā)現(xiàn)文件已經(jīng)讀取成功,但是頁(yè)面上沒(méi)有顯示出來(lái)。
<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: '文件地址無(wú)效,請(qǐng)刷新后重試' }) } // 加載文件內(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; } // 銷毀原來(lái)的表格 window.luckysheet.destroy(); // 重新創(chuàng)建新表格 window.luckysheet.create({ container: 'luckysheet', // 設(shè)定DOM容器的id showtoolbar: false, // 是否顯示工具欄 showinfobar: false, // 是否顯示頂部信息欄 showstatisticBar: false, // 是否顯示底部計(jì)數(shù)欄 sheetBottomConfig: false, // sheet頁(yè)下方的添加行按鈕和回到頂部按鈕配置 allowEdit: false, // 是否允許前臺(tái)編輯 enableAddRow: false, // 是否允許增加行 enableAddCol: false, // 是否允許增加列 sheetFormulaBar: false, // 是否顯示公式欄 enableAddBackTop: false, //返回頭部按鈕 data: exportJson.sheets, //表格內(nèi)容 title: exportJson.info.name //表格標(biāo)題 }); }, function(error){ // 如果拋出任何錯(cuò)誤,則處理錯(cuò)誤 } ) } }
新窗口打開(kāi)預(yù)覽xlsx,我是使用的如下方法跳轉(zhuǎn)到要預(yù)覽的頁(yè)面的路由(第三步的代碼就是預(yù)覽頁(yè)面的),帶上了參數(shù)。
// 獲取目標(biāo)路由地址 const routeUrl = this.$router.resolve({ name: 'OfficeView', query: { fileUrl: item.fileKey, fileType: item.type } }) // 打開(kāi)新標(biāo)簽頁(yè) window.open(routeUrl.href, '_blank')
方法二:使用file-viewer實(shí)現(xiàn)excel的預(yù)覽
點(diǎn)下面鏈接可以查看哦
vue項(xiàng)目預(yù)覽excel表格(file-viewer插件)
到此這篇關(guān)于vue項(xiàng)目使用luckyexcel預(yù)覽excel表格的文章就介紹到這了,更多相關(guān)vue 預(yù)覽excel表格內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- vue2.0 + element UI 中 el-table 數(shù)據(jù)導(dǎo)出Excel的方法
- vue項(xiàng)目預(yù)覽excel表格功能(file-viewer插件)
- Vue3實(shí)現(xiàn)動(dòng)態(tài)導(dǎo)入Excel表格數(shù)據(jù)的方法詳解
- 使用SpringBoot+EasyExcel+Vue實(shí)現(xiàn)excel表格的導(dǎo)入和導(dǎo)出詳解
- vue使用axios導(dǎo)出后臺(tái)返回的文件流為excel表格詳解
- vue項(xiàng)目中常見(jiàn)的三種文件類型在線預(yù)覽實(shí)現(xiàn)(pdf/word/excel表格)
- vue中el-table前端如何導(dǎo)出excel數(shù)據(jù)表格
相關(guān)文章
Vue3 Echarts通用的折線圖帶陰影效果實(shí)現(xiàn)
在環(huán)保倉(cāng)管項(xiàng)目中,做了一個(gè)每月對(duì)藥品、消耗品、設(shè)備的進(jìn)出,進(jìn)行統(tǒng)計(jì)百分比,效果好看,后面經(jīng)常在用這個(gè)樣式,下面通過(guò)示例代碼分享Vue3 Echarts通用的折線圖帶陰影效果實(shí)現(xiàn),感興趣的朋友一起看看吧2024-07-07vue 倒計(jì)時(shí)結(jié)束跳轉(zhuǎn)頁(yè)面實(shí)現(xiàn)代碼
在商場(chǎng)大家經(jīng)??吹酵\囀召M(fèi)倒計(jì)時(shí)支付頁(yè)面,今天小編通過(guò)本文給大家分享vue 倒計(jì)時(shí)結(jié)束跳轉(zhuǎn)頁(yè)面功能,感興趣的朋友一起看看吧2023-10-10element tree樹(shù)形組件回顯數(shù)據(jù)問(wèn)題解決
本文主要介紹了element tree樹(shù)形組件回顯數(shù)據(jù)問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08一文帶你搞懂Vue.js如何實(shí)現(xiàn)全選反選功能
這篇文章主要為大家詳細(xì)介紹了Vue.js實(shí)現(xiàn)全選反選功能的相關(guān)知識(shí),文中是示例代碼簡(jiǎn)潔易懂,具有一定的借鑒價(jià)值,有需要的小伙伴可以了解下2025-01-01Vue重要修飾符.sync對(duì)比v-model的區(qū)別及使用詳解
這篇文章主要為大家介紹了Vue中重要修飾符.sync與v-model的區(qū)別對(duì)比及使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07vue雙向數(shù)據(jù)綁定原理分析、vue2和vue3原理的不同點(diǎn)
這篇文章主要介紹了vue雙向數(shù)據(jù)綁定原理分析、vue2和vue3原理的不同點(diǎn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12