zoukankan      html  css  js  c++  java
  • vue~使用axios实现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=>{});
        }
     }
    }
    

    截图
    截图

  • 相关阅读:
    C#并行编程-并发集合
    使用Lucene.Net实现全文检索
    Lucene.Net 站内搜索
    lucene.net helper类 【结合盘古分词进行搜索的小例子(分页功能)】
    Spring学习之Ioc
    Hibernate向MySQL插入中文数据--乱码解决
    MySql表中key的区别
    Myeclipse中相同变量高亮显示
    Mac下配置PHP+Apache+phpMyAdmin+MySql远程链接
    JQuery实现——黑客帝国代码雨效果
  • 原文地址:https://www.cnblogs.com/lori/p/13322246.html
Copyright © 2011-2022 走看看