vue~使用axios實現excel文件下載的實現

来源:https://www.cnblogs.com/lori/archive/2020/07/16/13322246.html
-Advertisement-
Play Games

前端VUE頁面上的導出或者下載功能,一般是調用後端的一個介面,由介面生成excel,word這些文件的流信息,返回給vue,然後由vue去構建下載的動作,這邊整理了一下,封裝了一下,方便以後復用。 封裝一個download文件 使用年月日時分秒毫秒做為文件的名稱,下載為excel文件 /** * 下 ...


前端VUE頁面上的導出或者下載功能,一般是調用後端的一個介面,由介面生成excel,word這些文件的流信息,返回給vue,然後由vue去構建下載的動作,這邊整理了一下,封裝了一下,方便以後復用。

封裝一個download文件

使用年月日時分秒毫秒做為文件的名稱,下載為excel文件

/**
 * 下載文件
 */
export const downloadFile = (url,ext, params) => {
    let accessToken = getStore('accessToken');
    return axios({
        method: 'get',
        url: `${base}${url}`,
        params: params,
        headers: {
            'accessToken': accessToken
        },
        responseType: 'blob', //二進位流
    }).then(res => {
        // 處理返回的文件流
        const content = res;
        const blob = new Blob([content], { type: 'application/vnd.ms-excel;charset=utf-8' });
        var date =
            new Date().getFullYear() +
            "" +
            (new Date().getMonth() + 1) +
            "" +
            new Date().getDate() +
            "" +
            new Date().getHours() +
            "" +
            new Date().getMinutes() +
            "" +
            new Date().getSeconds() +
            "" +
            new Date().getMilliseconds();
        const fileName = date + "." + ext;
        if ("download" in document.createElement("a")) {
            // 非IE下載
            const elink = document.createElement("a");
            elink.download = fileName;
            elink.style.display = "none";
            elink.href = URL.createObjectURL(blob);
            document.body.appendChild(elink);
            elink.click();
            URL.revokeObjectURL(elink.href); // 釋放URL 對象
            document.body.removeChild(elink);
        } else {
            // IE10+下載
            navigator.msSaveBlob(blob, fileName);
        }
    });
};

為具體功能封裝一個組件,方便在前臺調用


// 評價導出
export const getRecordExport= (params) => {
    return downloadFile('/record/export',"xlsx", params)
}

vue頁面上調用它,實現導出

<script>
import {
  getReportExport
} from "@/api/index";
import util from "@/libs/util.js";

export default {
  name: "task-manage",
 data() {},
 methods: {
   exportExcel() {
      getReportExport(this.searchForm).then(res=>{});
    }
 }
}

截圖
截圖


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 《第一行代碼》第二章總結 上一章總結是在看完後寫的,感覺遺漏很多,從這章起是邊閱讀邊總結。 由於有了新的事情,《第一行代碼》的總結要停一段時間,但不會太久。 手動創建活動 選擇 Add No Activity ,創建一個活動。 在res 下創建 layout 文件夾,在文件夾下創建 first_la ...
  • 效果預覽:https://li_shang_shan.gitee.io/imitated_millet_rotation 源碼下載:https://gitee.com/li_shang_shan/imitated_millet_rotation 結構代碼如下: <html> <head> <meta ...
  • // 獲取當前時間 getNowTime: function () { let dateTime let yy = new Date().getFullYear() let mm = new Date().getMonth() + 1 let dd = new Date().getDate() le ...
  • elementUI時間日期選擇器選擇完傳給後臺的是林尼治標準時間 直接將格林尼治時間作參數傳到下麵的方法,下麵的方法直接貼, // 格林尼治轉換yyyy-MM-dd HH:mm:ss GMTToStr (time) { console.log('time:' + time) let date = n ...
  • 用JS製作導航顯示子菜單(滑鼠進入的時候,我們要a標簽顯示它的兄弟元素 ) HTML: <nav> <ul> <li><a href="#">關於</a></li> <li><a href="#">技能</a></li> <li> <a class="menutrigger" href="#">作品 ...
  • Ajax 的原理簡單來說是在⽤戶和伺服器之間加了—個中間層( AJAX 引擎),通過XmlHttpRequest 對象來向伺服器發非同步請求,從伺服器獲得數據,然後⽤ javascrip t 來操作 DOM ⽽更新⻚⾯。使⽤戶操作與伺服器響應非同步化。這其中最關鍵的⼀步就是從服 務器獲得請求數據 Aja ...
  • 1. 對CSS優化的理解(比如:代碼層面) 2. ES6的理解(let const變數/箭頭函數/promise.all併發/ES6的模塊化和node.js模塊化的區別) 3. jquery鏈式調用/鏈式編程的原理 4. element的二次封裝 5. js的繼承有哪幾種 6. 垂直居中有哪些方式 ...
  • 值 中文描述 英文名稱 100 繼續 Continue 101 交換協議 Switching Protocols 102 處理中 Processing 103 早期提示 Early Hints 104-199 未分配 Unassigned 200 請求成功 OK 201 已建立 Created 20 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...