亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

vue導(dǎo)出excel的兩種實(shí)現(xiàn)方式代碼

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

目前使用

handleExport () {
      this.exportName = `通訊錄`
      let params = tools.deepClone(this.searchParams)
      params.search.size = this.total
      接口請(qǐng)求地址(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對(duì)象
      }).catch(err => {
        this.$message.error(err)
      })
    },

需求說(shuō)明

通過(guò)vue實(shí)現(xiàn)導(dǎo)出有兩種方式:

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

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

一、后端返回的是地址

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

二、后端返回的是文件流

(1)設(shè)置請(qǐng)求頭

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

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

onExportClick() {  //導(dǎo)出的方法
            exportDetailOrder(this.pType)  //導(dǎo)出的接口
                .then(result => {
                    console.log(result)
                    const link = document.createElement('a')  //創(chuàng)建a標(biāo)簽
                    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)計(jì)報(bào)表'
                    document.body.appendChild(link)
                    // 模擬點(diǎn)擊事件
                    link.click()  //設(shè)置點(diǎn)擊事件
                })
                .catch(err => {
                    console.log(err)
                })
        }

(3)附加說(shuō)明

有的時(shí)候做到上述幾步還是不能導(dǎo)出,debugger之后,發(fā)現(xiàn)接口調(diào)用的時(shí)候直接走的.catch,沒(méi)走.then,所以需要我們?cè)谌猪憫?yīng)攔截做一些判斷。

//一般在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ā)生錯(cuò)誤!'))
    } 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對(duì)象
    });
};

總結(jié) 

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

相關(guān)文章

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

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

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

    解決elementui表格操作列自適應(yīng)列寬

    這篇文章主要介紹了解決elementui表格操作列自適應(yīng)列寬,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 使用Element的InfiniteScroll 無(wú)限滾動(dòng)組件報(bào)錯(cuò)的解決

    使用Element的InfiniteScroll 無(wú)限滾動(dòng)組件報(bào)錯(cuò)的解決

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

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

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

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

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

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

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

    Vue ElementUi同時(shí)校驗(yàn)多個(gè)表單(巧用new promise)

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

    解決vue項(xiàng)目打包后提示圖片文件路徑錯(cuò)誤的問(wèn)題

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

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

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

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

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

最新評(píng)論