欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue通過Blob對象實現(xiàn)導(dǎo)出Excel功能示例代碼

 更新時間:2020年07月31日 14:47:47   作者:他好像一條狗啊  
這篇文章主要介紹了Vue通過Blob對象實現(xiàn)導(dǎo)出Excel功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

  不同的項目有不同的導(dǎo)出需求,有些只導(dǎo)出當(dāng)前所顯示結(jié)果頁面的表格進入excel,這個時候就有很多插件,比如vue-json-excel或者是Blob.js+Export2Excel.js來實現(xiàn)導(dǎo)出Excel功能。但是有些需求因為數(shù)據(jù)量太大,成千上萬條數(shù)據(jù),所以是需要后端拼接,然后輸出二進制流文件,然后前端直接下載,這次我們談?wù)労笳叩淖龇ā?/p>

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

<el-button @click="exportExcel()">導(dǎo)出</el-button>

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

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

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

圖1 控制臺輸出的Blob對象

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

圖2 后端設(shè)置了響應(yīng)頭相對應(yīng)的content-type

  然后,需要給這個Blob對象設(shè)置一個type,這個type表明改Blob對象所包含數(shù)據(jù)的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

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

圖3 創(chuàng)建一個臨時的url指向blob對象

  一般來說,這樣就可以實現(xiàn)下載的功能了。

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

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

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

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

總結(jié)

到此這篇關(guān)于Vue通過Blob對象實現(xiàn)導(dǎo)出Excel功能的文章就介紹到這了,更多相關(guān)vue 通過blob對象導(dǎo)出excel內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談Vue單頁面做SEO的四種方案

    淺談Vue單頁面做SEO的四種方案

    Vue SPA單頁面應(yīng)用對SEO不友好,當(dāng)然也有相應(yīng)的解決方案,通過查找資料,大概有以下4種方法,本文就詳細的介紹一下
    2021-10-10
  • Vue transition過渡組件詳解

    Vue transition過渡組件詳解

    我們現(xiàn)在可以了解一下vue的過渡,vue在插入、更新以及移除DOM元素的時候,提供了很多不同方式過渡的效果,如果在css過渡自動應(yīng)用class,在過渡鉤子函數(shù)中使用JavaScript直接操作DOM就可以了
    2022-08-08
  • 詳解Vue3中偵聽器watch的使用教程

    詳解Vue3中偵聽器watch的使用教程

    學(xué)過 vue2 的小伙伴們肯定學(xué)習(xí)過偵聽器,主要是用來監(jiān)聽頁面數(shù)據(jù)或者是路由的變化,來執(zhí)行相應(yīng)的操作,在 vue3里面呢,也有偵聽器的用法,功能基本一樣,本文就來為大家詳細講講
    2022-07-07
  • 一步一步實現(xiàn)Vue的響應(yīng)式(對象觀測)

    一步一步實現(xiàn)Vue的響應(yīng)式(對象觀測)

    這篇文章主要介紹了一步一步實現(xiàn)Vue的響應(yīng)式(對象觀測),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Vue.js如何監(jiān)聽window窗口尺寸變化

    Vue.js如何監(jiān)聽window窗口尺寸變化

    使用VUE開發(fā)后臺項目,后臺項目需要進行后臺根據(jù)瀏覽器窗口進行變化,需要使用vue來監(jiān)聽瀏覽器的窗口變化,這篇文章主要給大家介紹了關(guān)于Vue.js如何監(jiān)聽window窗口尺寸變化的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • vue 的 Render 函數(shù)

    vue 的 Render 函數(shù)

    Vue 推薦在絕大多數(shù)情況下使用模板來創(chuàng)建你的 HTML。然而在一些場景中,你真的需要 JavaScript 的完全編程的能力。這時你可以用渲染函數(shù),它比模板更接近編譯器。下面就和小編一起來學(xué)習(xí)下面文章內(nèi)容吧
    2021-09-09
  • vue項目打包為APP,靜態(tài)資源正常顯示,但API請求不到數(shù)據(jù)的操作

    vue項目打包為APP,靜態(tài)資源正常顯示,但API請求不到數(shù)據(jù)的操作

    這篇文章主要介紹了vue項目打包為APP,靜態(tài)資源正常顯示,但API請求不到數(shù)據(jù)的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • vue3中的ref()詳解

    vue3中的ref()詳解

    ref對象可以通過.value屬性進行修改,修改后的值也是響應(yīng)式的,并且修改后會觸發(fā)相關(guān)的副作用,這篇文章主要介紹了vue3中的ref(),需要的朋友可以參考下
    2023-05-05
  • vue多頁面配置詳情

    vue多頁面配置詳情

    這篇文章主要介紹了vue多頁面配置,單頁應(yīng)用這個概念,是隨著前幾年 AngularJS、React、Ember 等這些框架的出現(xiàn)而出現(xiàn)的。在前面的前言內(nèi)容里,我們在頁面渲染中講了頁面的局部刷新,而單頁應(yīng)用則是使用了頁面的局部刷新的能力,下面來看看詳細內(nèi)容,需要的朋友可以參考一下
    2021-11-11
  • 一文帶你了解什么是Vue的前端微服務(wù)架構(gòu)(Micro Frontends)

    一文帶你了解什么是Vue的前端微服務(wù)架構(gòu)(Micro Frontends)

    微前端架構(gòu)是一種將大型前端應(yīng)用拆分為多個小型、獨立的前端應(yīng)用的架構(gòu)風(fēng)格,每個小型前端應(yīng)用都可以獨立部署、獨立開發(fā)和獨立運行,下面我們就來學(xué)習(xí)一下它的相關(guān)使用吧
    2023-11-11

最新評論