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數據然後在前端生成並下載。