国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

Vue通過Blob對象實現導出Excel功能示例代碼

瀏覽:140日期:2022-06-11 17:20:36

不同的項目有不同的導出需求,有些只導出當前所顯示結果頁面的表格進入excel,這個時候就有很多插件,比如vue-json-excel或者是Blob.js+Export2Excel.js來實現導出Excel功能。但是有些需求因為數據量太大,成千上萬條數據,所以是需要后端拼接,然后輸出二進制流文件,然后前端直接下載,這次我們談談后者的做法。

Blob對象表示一個不可變、原始數據的類文件對象,通常我也叫它二進制流對象。我們可以通過Blob對象實現導出Excel功能,先放上代碼:

<el-button @click='exportExcel()'>導出</el-button><script>methods: { exportExcel(){ var params={ XX:xx//額外需要攜帶的請求體 } this.$axios.get(’/XX/XX’,{ params: params, responseType: ’blob’ //首先設置responseType字段格式為 blob }).then(res => { console.log(res); let blob = new Blob([res], {type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8'}); // 為blob設置文件類型,這里以.xlsx為例 let url = window.URL.createObjectURL(blob); // 創建一個臨時的url指向blob對象 let a = document.createElement('a'); a.href = url; a.click(); // 釋放這個臨時的對象url window.URL.revokeObjectURL(url); }); }, }</script>

’responseType’表示的是服務器響應的數據類型,可以是’arrayBuffer’、’blob’、’document’、’json’、’txt’、’stream’,默認為json。axios官方文檔地址:https://www.kancloud.cn/yunye/axios/234845(axios請求配置章節)。

所以我們接收后臺傳給前端的二進制流之前需要先設置responseType為blob,否則默認會以json獲取,下載下來的文件打開會提示文件已損壞。控制臺輸出的可以看到是個正確的Blob對象,這就說明我們的配置是對的,如圖1所示。

Vue通過Blob對象實現導出Excel功能示例代碼

圖1 控制臺輸出的Blob對象

后端最好也要配置response頭的content-type為對應的類型,所圖2所示。

Vue通過Blob對象實現導出Excel功能示例代碼

圖2 后端設置了響應頭相對應的content-type

然后,需要給這個Blob對象設置一個type,這個type表明改Blob對象所包含數據的MIME類型。如果類型未知,則該值為空字符串。這里給出幾個常用文件格式的MIME類型:(詳細的可參考WebAPI官方文檔:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types)

擴展名----------MIME類型

.csv--------------text/csv

.jpeg/.jpg-------image/jpeg

.png-------------image/png

.rar--------------application/x-rar-compressed

.doc-------------application/msword

.docx-----------application/vnd.openxmlformats-officedocument.wordprocessingml.document

.xls--------------application/vnd.ms-excel

.xlsx------------application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

.zip--------------application/zip

在正常的導出請求之后可以看到又發了一個新的blob請求,其本質是到這個地址下載文件,如圖3所示:

Vue通過Blob對象實現導出Excel功能示例代碼

圖3 創建一個臨時的url指向blob對象

一般來說,這樣就可以實現下載的功能了。

這里提點題外話,谷歌瀏覽器下載設置默認為瀏覽器下載默認路徑,也就不會彈出文件框,谷歌瀏覽器下載文件框如圖4所示,也就沒有了所謂的自定義保存路徑和自定義文件名,如圖5所示,在瀏覽器底部會有下載提示。

Vue通過Blob對象實現導出Excel功能示例代碼

圖4谷歌瀏覽器下載文件框

Vue通過Blob對象實現導出Excel功能示例代碼

圖5 谷歌瀏覽器下載會在屏幕底部顯示

如果想要有下載文件框,請在設置->高級->下載內容->下載前詢問每個文件的保存位置中設置為啟用。

總結

到此這篇關于Vue通過Blob對象實現導出Excel功能的文章就介紹到這了,更多相關vue 通過blob對象導出excel內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: excel
相關文章:
主站蜘蛛池模板: 久久不见久久见免费影院www日本 | 九九视频精品在线 | 国内精品久久久久久久星辰影视 | 色婷婷激婷婷深爱五月老司机 | 日本手机看片 | se视频在线观看 | 国产区一区二区三 | 免费观看a级毛片在线播放 免费观看a级网站 | 成人午夜毛片在线看 | 最新最好看免费毛片基地 | 亚洲精品一区二区三区在线观看 | 久久er热这里只有精品23 | 久久er视频 | 99久久99久久精品免费看子伦 | 国产成a人片在线观看视频 国产成版人视频网站免费下 | 国产精品一区伦免视频播放 | 国产成人aa在线视频 | 成年人在线观看视频网站 | 日韩免费a级在线观看 | 国产成人综合亚洲 | 欧美一级二级毛片视频 | 亚洲另类视频在线观看 | 久久国产高清 | 欧美高清在线精品一区二区不卡 | 337p粉嫩日本亚洲大胆艺术照 | 午夜国产亚洲精品一区 | 色老汉丁香网 | 怡红院免费全部视频在线 | 高清欧美日本视频免费观看 | 久久不见久久见免费影院 | 日韩精品久久久免费观看夜色 | 亚洲国产成人精品久久 | 九九亚洲精品自拍 | 美女视频永久黄网站在线观看 | 国产精品亚洲欧美一级久久精品 | 久久久久久久99视频 | 韩国精品一区二区三区在线观看 | 国产精品自在自线亚洲 | 成人a视频片在线观看免费 成人a视频在线观看 | 手机看片日韩高清国产欧美 | 欧美13一14周岁a在线播放 |