欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue導出excel的兩種實現(xiàn)方式代碼

 更新時間:2023年08月23日 09:54:30   作者:Humor_L  
這篇文章主要給大家介紹了關(guān)于vue導出excel的兩種實現(xiàn)方式,在項目中我們可能會碰到導出Excel文件的需求,文中給出了詳細的代碼示例,需要的朋友可以參考下

目前使用

handleExport () {
      this.exportName = `通訊錄`
      let params = tools.deepClone(this.searchParams)
      params.search.size = this.total
      接口請求地址(params).then(res => {
        const href = window.URL.createObjectURL(new Blob([res]))
        const link = document.createElement('a')
        link.style.display = 'none'
        link.href = href
        link.setAttribute('download', this.exportName + '.xls')
        document.body.appendChild(link)
        link.click()
        document.body.removeChild(link) // 下載完成移除元素
        window.URL.revokeObjectURL(href) // 釋放掉blob對象
      }).catch(err => {
        this.$message.error(err)
      })
    },

需求說明

通過vue實現(xiàn)導出有兩種方式:

(1)后端返回的是一個地址,直接拼接打開下載就行

(2)后端返回的是文件流的形式,這個時候就需要在請求頭還有返回值的地方設(shè)置一下

一、后端返回的是地址

// 頁面代碼
<el-button
       type="primary"
       size="mini"
       class="filter-item"
       icon="el-icon-download"
       style="margin: 12px 20px 0 0; float: right"
       @click="onExportClick"
       >
       導出
</el-button>
 onExportClick() {//導出方法
     exportDevices(this.listQuery) //導出接口
      .then(result => {
         const url = result.data
         window.open(url)    //通過這個打開網(wǎng)頁就可下載導出
      })
       .catch(err => console.log(err))
}

二、后端返回的是文件流

(1)設(shè)置請求頭

/**
* 按照部門人員導出(包括事件類型)
* @param {*} pType
* @returns
*/
export function exportDetailOrder(pType) {
  return request({
      url: '/exportEventDetailByDepart',
      method: 'get',
      responseType: 'blob',  //需要在此處設(shè)置請求頭,設(shè)置請求的類型為blob文件流的形式
      params: {
          pType
      }
  })
}

(2)設(shè)置返回結(jié)果,處理返回我文件流

onExportClick() {  //導出的方法
            exportDetailOrder(this.pType)  //導出的接口
                .then(result => {
                    console.log(result)
                    const link = document.createElement('a')  //創(chuàng)建a標簽
                    const blob = new Blob([result], { type: 'application/vnd.ms-excel' }) //設(shè)置文件流
                    link.style.display = 'none'
                    // 設(shè)置連接
                    link.href = URL.createObjectURL(blob)  //將文件流轉(zhuǎn)化為blob地址
                    link.download = '處理人員維修工單統(tǒng)計報表'
                    document.body.appendChild(link)
                    // 模擬點擊事件
                    link.click()  //設(shè)置點擊事件
                })
                .catch(err => {
                    console.log(err)
                })
        }

(3)附加說明

有的時候做到上述幾步還是不能導出,debugger之后,發(fā)現(xiàn)接口調(diào)用的時候直接走的.catch,沒走.then,所以需要我們在全局響應攔截做一些判斷。

//一般在utils下面的requext.js文件里面
export function validResponse(res, errorMessage) {
    if (res instanceof Blob) {  //如果返回的是文件流的形式,直接return res
        return res
    } else if (res.code !== 200 && res.code !== 201 && res.code !== 204) {
        return Promise.reject(new Error(res.message || '發(fā)生錯誤!'))
    } else {
        return res
    }
}

目前用的:

handleExport() {
              let me = this
              let url = '/fcst/gpcprevention/exportGpcSummary'
              let filename = me.reportname
              let exportparams = {
                taskyear: utils.formatDate(me.searchParams.taskyear, 'yyyy'),
                reportid: me.searchParams.reportid,
                  char1:me.searchParams.char1,
              }
              utils.onDownload(me, url, filename, exportparams);
            }

utils.onDownload方法:

utils.onDownload = function (vm,url,filename,searchParams) {
    let params = utils.addFormData(searchParams);
    vm.$axios(
        {
            method: 'post',
            url: url,
            data: params,
            responseType: 'blob'
        }
    ).then(function(res) {
        let href = window.URL.createObjectURL(new Blob([res]));
        let link = document.createElement('a');
        link.style.display = 'none';
        link.href = href;
        link.setAttribute('download', filename + '.xls');
        document.body.appendChild(link);
        link.click();
        document.body.removeChild(link); // 下載完成移除元素
        window.URL.revokeObjectURL(href); // 釋放掉blob對象
    });
};

總結(jié) 

到此這篇關(guān)于vue導出excel的兩種實現(xiàn)方式的文章就介紹到這了,更多相關(guān)vue導出excel內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于el-scrollbar滾動條初始化不顯示的問題及解決

    關(guān)于el-scrollbar滾動條初始化不顯示的問題及解決

    這篇文章主要介紹了關(guān)于el-scrollbar滾動條初始化不顯示的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 解決elementui表格操作列自適應列寬

    解決elementui表格操作列自適應列寬

    這篇文章主要介紹了解決elementui表格操作列自適應列寬,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • 使用Element的InfiniteScroll 無限滾動組件報錯的解決

    使用Element的InfiniteScroll 無限滾動組件報錯的解決

    這篇文章主要介紹了使用Element的InfiniteScroll 無限滾動組件報錯的解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • vue3獲取url地址參數(shù)的示例詳解

    vue3獲取url地址參數(shù)的示例詳解

    這篇文章主要介紹了vue3獲取url地址參數(shù),Vue3?獲取地址欄參數(shù)有兩個方式:查詢參數(shù)和路徑參數(shù),文中結(jié)合示例代碼給大家詳細講解,需要的朋友可以參考下
    2023-04-04
  • 基于vue2實現(xiàn)簡單的答題組件

    基于vue2實現(xiàn)簡單的答題組件

    這篇文章主要為大家詳細介紹了如何基于vue2實現(xiàn)簡單的答題組件,點擊正確的選項,該選項背景變綠色;點擊錯誤的選項,該選項背景變紅色,有需要的可以參考下
    2024-12-12
  • VueJs打包之后遇到的坑及解決

    VueJs打包之后遇到的坑及解決

    這篇文章主要介紹了VueJs打包之后遇到的坑及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Vue ElementUi同時校驗多個表單(巧用new promise)

    Vue ElementUi同時校驗多個表單(巧用new promise)

    這篇文章主要介紹了巧用new promise實現(xiàn)Vue ElementUi同時校驗多個表單功能,實現(xiàn)的方法有很多種,本文給大家?guī)淼氖且环N比較完美的方案,需要的朋友可以參考下
    2018-06-06
  • 解決vue項目打包后提示圖片文件路徑錯誤的問題

    解決vue項目打包后提示圖片文件路徑錯誤的問題

    這篇文章主要介紹了解決vue項目打包后提示圖片文件路徑錯誤的問題,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-07-07
  • Vue3中實現(xiàn)發(fā)送網(wǎng)絡(luò)請求功能(最新推薦)

    Vue3中實現(xiàn)發(fā)送網(wǎng)絡(luò)請求功能(最新推薦)

    Axios是一個基于Promise的HTTP客戶端,可以在瀏覽器和Node.js中用于發(fā)送HTTP請求,本文主要介紹在Vue3中實現(xiàn)發(fā)送網(wǎng)絡(luò)請求功能,感興趣的朋友一起看看吧
    2023-12-12
  • Vue3+TypeScript實現(xiàn)二維碼生成組件

    Vue3+TypeScript實現(xiàn)二維碼生成組件

    在?Web?應用中,生成二維碼是常見的需求,本文介紹如何用?Vue3?和?TypeScript?開發(fā)一個二維碼生成組件,支持生成圖片或?canvas?形式的二維碼,并提供豐富的配置選項,感興趣的小伙伴跟著小編一起來看看吧
    2024-04-04

最新評論