vue使用axios導(dǎo)出后臺返回的文件流為excel表格詳解
使用axios導(dǎo)出后臺返回的文件流為excel
之前有一個需求是要使用post請求,導(dǎo)出后臺返回的文件流并在表格中使用,大概思路為使用axios請求回數(shù)據(jù),定義數(shù)據(jù)為blob格式,再創(chuàng)建一個a標(biāo)簽自調(diào)就可以完成了
<button @click="download">導(dǎo)出</button>
data() {
? ? return {
? ? ? isClick: true,
? ? };
? },download() {
// 簡單的一個小節(jié)流
if (!this.isClick) {
return;
}
this.isClick = false;
axios({
method: "POST",
url: "",
data: {},
responseType: "blob", //定義為blob
}).then((res) => {
const file = new Blob([res.data], { type: "application/vnd.ms-excel" });
const url = URL.createObjectURL(file);
const a = document.createElement("a");
a.href = url;
a.click();
this.isClick = true;
});
},vue axios導(dǎo)出excel亂碼解決
最近,公司讓我寫一個導(dǎo)出excel的功能,由于已經(jīng)有了前人寫好的代碼,我就直接拿著他的代碼改了一下,結(jié)果在前端下載好之后直接出現(xiàn)了亂碼問題。

開始我懷疑自己哪里寫錯了,經(jīng)過仔細(xì)的檢查,并沒有問題。而且在后臺生成的excel并沒有任何問題。
后來我以為是讀入字節(jié)流出現(xiàn)了問題,經(jīng)過調(diào)試對比也是正常的。唯一的問題就是通過后臺返回的res出現(xiàn)了亂碼。
上網(wǎng)搜索,都說這樣寫就行了。

和我寫的一樣。在經(jīng)過了一天的檢查還是無果后,我問了問前輩,原來問題出在這里。
.post("/TasksTable/ExportData",{
item: {
//傳入項目id,根據(jù)項目id來 搜素任務(wù)
project_id: this.tasksinfo,
},
//頁的索引和頁的長度。
PageSize: this.pageSize,
PageIndex: this.currentPage,
//定義類型
headers: {
"Content-Type": "application/x-www-form-urlencoded",
},
responseType:'blob',
})
如圖所示,我用一個花括號把我傳入的數(shù)據(jù)和 headers、responseType放在了一起,所以headers和responseType無效了。
.post("/TasksTable/ExportData",{
item: {
//傳入項目id,根據(jù)項目id來 搜素任務(wù)
project_id: this.tasksinfo,
},
//頁的索引和頁的長度。
PageSize: this.pageSize,
PageIndex: this.currentPage,
},
{
//定義類型
headers: {
"Content-Type": "application/x-www-form-urlencoded",
},
responseType:'blob',
})
把他們用兩個花括號隔開就可以了。最終成功導(dǎo)出!

找不到原因的感覺真頭疼啊,看了一天沒找到原因,最終通過求助才解決了。哎,這編碼之路啊~
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
- vue2.0 + element UI 中 el-table 數(shù)據(jù)導(dǎo)出Excel的方法
- vue項目預(yù)覽excel表格功能(file-viewer插件)
- vue項目使用luckyexcel預(yù)覽excel表格功能(心路歷程)
- Vue3實現(xiàn)動態(tài)導(dǎo)入Excel表格數(shù)據(jù)的方法詳解
- 使用SpringBoot+EasyExcel+Vue實現(xiàn)excel表格的導(dǎo)入和導(dǎo)出詳解
- vue項目中常見的三種文件類型在線預(yù)覽實現(xiàn)(pdf/word/excel表格)
- vue中el-table前端如何導(dǎo)出excel數(shù)據(jù)表格
相關(guān)文章
el-table?fixed固定列導(dǎo)致錯位的解決方法介紹
ElementUI中el-table設(shè)置指定列固定不動,不受滾動條影響,下面這篇文章主要給大家介紹了關(guān)于el-table?fixed固定列導(dǎo)致錯位的解決方法,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11
Vue3的provide和inject實現(xiàn)多級傳遞的原理解析
Vue3中的provide和inject函數(shù)通過原型鏈實現(xiàn)數(shù)據(jù)的多級傳遞,父組件使用provide注入數(shù)據(jù),子組件和后代組件通過inject獲取這些數(shù)據(jù),在創(chuàng)建組件實例時,子組件會繼承父組件的provides屬性對象,介紹Vue3的provide和inject實現(xiàn)多級傳遞的原理,需要的朋友可以參考下2024-12-12
vue 自定義提示框(Toast)組件的實現(xiàn)代碼
這篇文章主要介紹了vue 自定義提示框(Toast)組件的實現(xiàn)代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-08-08
element-ui tooltip修改背景顏色和箭頭顏色的實現(xiàn)
這篇文章主要介紹了element-ui tooltip修改背景顏色和箭頭顏色的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
vue在標(biāo)簽中如何使用(data-XXX)自定義屬性并獲取
這篇文章主要介紹了vue在標(biāo)簽中如何使用(data-XXX)自定義屬性并獲取,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08
vue 基于abstract 路由模式 實現(xiàn)頁面內(nèi)嵌的示例代碼
這篇文章主要介紹了vue 基于abstract 路由模式 實現(xiàn)頁面內(nèi)嵌的示例代碼,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下2020-12-12

