最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue項(xiàng)目使用luckyexcel預(yù)覽excel表格功能(心路歷程)

 更新時(shí)間:2023年10月19日 12:08:13   作者:悅悅豬  
這篇文章主要介紹了vue項(xiàng)目使用luckyexcel預(yù)覽excel表格,我總共嘗試了2種方法預(yù)覽excel,均可實(shí)現(xiàn),還發(fā)現(xiàn)一種方法可以實(shí)現(xiàn),需要后端配合,叫做KKfileview,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下

場(chǎng)景

最近工作中在開發(fā)文檔上傳并能在新窗口打開預(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)紅的問題。

第一步:vue項(xiàng)目引入luckysheet的相關(guān)依賴(這也是上面提到的如果沒有引入會(huì)報(bào)紅window.luckysheet找不到的問題)

public文件夾下的index.html里引入luckysheet的相關(guān)依賴,由于考慮到我所做的這個(gè)項(xiàng)目可能會(huì)內(nèi)網(wǎng)部署,所以將這些依賴包放在了public文件夾下的static文件夾里新建了一個(gè)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要寫上,后面渲染要用到,還有重要的一點(diǎn)是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: '文件地址無效,請(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;
              }
              // 銷毀原來的表格
              window.luckysheet.destroy();
              // 重新創(chuàng)建新表格
              window.luckysheet.create({
                container: 'luckysheet', // 設(shè)定DOM容器的id
                showtoolbar: false, // 是否顯示工具欄
                showinfobar: false, // 是否顯示頂部信息欄
                showstatisticBar: false, // 是否顯示底部計(jì)數(shù)欄
                sheetBottomConfig: false, // sheet頁下方的添加行按鈕和回到頂部按鈕配置
                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ò)誤
          }
      )
    }
}

新窗口打開預(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實(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)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue3組合式API獲取子組件屬性和方法的代碼實(shí)例

    vue3組合式API獲取子組件屬性和方法的代碼實(shí)例

    這篇文章主要為大家詳細(xì)介紹了vue3組合式API獲取子組件屬性和方法的代碼實(shí)例,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01
  • Vue3使用時(shí)應(yīng)避免的10個(gè)錯(cuò)誤總結(jié)

    Vue3使用時(shí)應(yīng)避免的10個(gè)錯(cuò)誤總結(jié)

    Vue?3已經(jīng)穩(wěn)定了相當(dāng)長一段時(shí)間了。許多代碼庫都在生產(chǎn)環(huán)境中使用它,其他人最終都將不得不遷移到Vue?3。我現(xiàn)在有機(jī)會(huì)使用它并記錄了我的錯(cuò)誤,下面這些錯(cuò)誤你可能想要避免
    2023-03-03
  • mpvue實(shí)現(xiàn)左側(cè)導(dǎo)航與右側(cè)內(nèi)容的聯(lián)動(dòng)

    mpvue實(shí)現(xiàn)左側(cè)導(dǎo)航與右側(cè)內(nèi)容的聯(lián)動(dòng)

    這篇文章主要為大家詳細(xì)介紹了mpvue實(shí)現(xiàn)左側(cè)導(dǎo)航與右側(cè)內(nèi)容的聯(lián)動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • 淺析VUE防抖與節(jié)流

    淺析VUE防抖與節(jié)流

    這篇文章主要介紹了淺析VUE防抖與節(jié)流的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)vue框架,感興趣的朋友可以了解下
    2020-11-11
  • vue?動(dòng)態(tài)style?拼接寬度問題

    vue?動(dòng)態(tài)style?拼接寬度問題

    這篇文章主要介紹了vue?動(dòng)態(tài)style?拼接寬度問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • vite結(jié)合electron構(gòu)建前端桌面應(yīng)用程序

    vite結(jié)合electron構(gòu)建前端桌面應(yīng)用程序

    本文主要介紹了vite結(jié)合electron構(gòu)建前端桌面應(yīng)用程序,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Vue常用指令詳解分析

    Vue常用指令詳解分析

    這篇文章給大家詳細(xì)分析了關(guān)于VUE的常用的相關(guān)指令內(nèi)容,對(duì)此有需要的朋友們可以學(xué)習(xí)下。
    2018-08-08
  • vue-resource 攔截器(interceptor)的使用詳解

    vue-resource 攔截器(interceptor)的使用詳解

    本篇文章主要介紹了vue-resource 攔截器(interceptor)的使用詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07
  • 深入淺析Vue不同場(chǎng)景下組件間的數(shù)據(jù)交流

    深入淺析Vue不同場(chǎng)景下組件間的數(shù)據(jù)交流

    探通過本篇文章給大家探討不同場(chǎng)景下組件間的數(shù)據(jù)“交流”的Vue實(shí)現(xiàn)方法,感興趣的朋友一起看看吧
    2017-08-08
  • 詳解key在Vue3和Vue2的不同之處

    詳解key在Vue3和Vue2的不同之處

    key屬性是一個(gè)特殊的屬性,用于標(biāo)識(shí)每個(gè)節(jié)點(diǎn)的唯一性。在Vue2.x版本中的key和Vue3.x版本中的key有很大的不同,那么在這篇文章中,我們將會(huì)討論Vue2中的key和Vue3中的key的區(qū)別
    2023-04-04

最新評(píng)論

怀安县| 磴口县| 临江市| 宣武区| 莱西市| 屏南县| 桦甸市| 旺苍县| 从化市| 皋兰县| 上林县| 阳曲县| 时尚| 当阳市| 云和县| 霍州市| 同江市| 天柱县| 门头沟区| 冷水江市| 三原县| 东明县| 新和县| 吉林省| 长海县| 沛县| 仙居县| 清徐县| 孟村| 河间市| 荃湾区| 青田县| 晋州市| 疏附县| 鲁山县| 盖州市| 申扎县| 鄂温| 威信县| 黄梅县| 东乡县|