vue通過接口直接下載java生成好的Excel表格

Java導出Excel接口可參考:SpringBoot導出Excel

通過瀏覽器直接訪問導出接口就會自動下載創建好的 Excel 表格。但是我們在vue裏使用axios請求接口,一般是處理json數據,如果要處理文件流數據,需要做下特殊處理即可直接下載文件。

假如 下載Excel接口爲:/apis/downExcel,則請求如下

import axios from 'axios'

export const exportFile = params => {
    var param = new URLSearchParams()
    param.append('beginTime', params.beginTime)
    param.append('endTime', params.endTime)
    return axios({
        method: 'post',
        data: param,
        url: '/apis/downExcel',
        responseType: 'blob'
    })
}

下載按鈕觸發下載方法如下:

downExcel() {
    var params = {
        beginTime: this.times[0],
        endTime: this.times[1]
    };
    exportFile(params).then(
        data => {
            /** 獲取生成設置好的文件名 */
            var filename = data.headers["content-disposition"];
            filename = filename.split("=")[1];
            filename = decodeURIComponent(filename, "utf-8");
            /** 接收文件流 */
            const blob = new Blob([data.data]);
            let url = URL.createObjectURL(blob);
            /** 模擬瀏覽器操作Document,並模擬下載動作 */
            let link = document.createElement("a");
            link.style.display = "none";
            link.href = url;
            link.setAttribute("download", filename);
            document.body.appendChild(link);
            link.click();
        },
        error => {
          console.log(error);
          this.$message.error("下載異常,請稍後再試");
        });
}

這樣就可以在vue項目中完整下載Excel接口,當然vue也有生成Excel的插件,接收後臺的json數據然後在前端生成並下載。

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