• 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)
    }

    秒收目录站https://www.tomove.com.cn

    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=>{});
        }
     }
    }
  • 相关阅读:
    Haskell 编写几个递归函数 练习 typeclass 模式匹配等
    Haskell-chp01
    阉割的List
    实现简单的string类
    构造函数语义学——Copy Constructor 的构造操作
    BinarySearchTree-二叉搜索树
    对象模型
    二叉树的遍历
    带头尾结点的单链表
    Effective Modern C++ ——条款5 优先选择auto,而非显式型别声明
  • 原文地址:https://www.cnblogs.com/qianxiaox/p/13704793.html
Copyright © 2020-2023  润新知