Vue 前端導出後端返回的excel文件

在網上搜索了一番之後,決定採用Blob方式,這也是大家推薦的一種的方式,特此做下記錄。

頁面:
clipboard.png
先篩選,向後端請求接口返回excel文件,代碼如下:

    const apiUrl = this.Global.httpUrl + '/laima/export/new/exportTackOutOrder'
    console.log(this.form)
    let param = new URLSearchParams();
    param.append("startDate", "2019-01-01");
    param.append("endDate", "2019-02-01");
    this.$axios.post(apiUrl, param,{responseType: 'blob'}).then((res) => {
        console.log( res.data)
        const link = document.createElement('a')
        let blob = new Blob([res.data],{type: 'application/vnd.ms-excel'});
        link.style.display = 'none'
        link.href = URL.createObjectURL(blob);
        let num = ''
        for(let i=0;i < 10;i++){
            num += Math.ceil(Math.random() * 10)
        }
        link.setAttribute('download', '外賣統計_' + num + '.xlsx')
        document.body.appendChild(link)
        link.click()
        document.body.removeChild(link)
    })

仔細看axios請求加了個responseType: 'blob'配置,這是很重要的

clipboard.png
可以看到請求返回了一個Blob對象,你如果沒有正確的加上responseType: 'blob’這個參數,返回的就不是個Blob對象,而是字符串了。
然後就自動下載了!
參考 https://blog.csdn.net/liujun03/article/details/84378942

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章