• js实现excel文件下载


    1.文件流下载文件:
    /**
     * @description: 
     * @param {type} fileName-文件名 suffix-后缀名
     * @return: 
     */
    export function axiosPostExport (url, data, fileName, suffix='.xlsx') {
        url = getUrlIfUseMock(url, {method: 'POST'});
        return axios({
            method: 'post',
            url,
            data,
            responseType: 'blob'
        }).then(res => {
            return res.data
        }).then(res => {
            const content = res
            const fileNamex = fileName + '-' + moment().format('YYYYMMDDHHmmss') + suffix
            const blob = new Blob([content])
            if ('download' in document.createElement('a')) { // 非IE下载
                const elink = document.createElement('a')
                elink.download = fileNamex
                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, fileNamex)
            }
        }).catch(error => console.log(error))
    }
    或者:let url = `/admin/user/list/all/export?countryCode=310101`;
            let xhr = new XMLHttpRequest();
            xhr.open("POST", url, true); // 也可以使用POST方式,根据接口
            xhr.responseType = "blob"; // 返回类型blob,XMLHttpRequest支持二进制流类型
            xhr.onload = function() {
              if (this.status === 200) {
                let blob = this.response; //使用response作为返回,而非responseText
                let reader = new FileReader();
                reader.readAsDataURL(blob); // 转换为base64,可以直接放入a标签href
                reader.onload = function(e) {
                  // 转换完成,创建一个a标签用于下载
                  let a = document.createElement("a");
                  a.download = "原始数据.xls";
                  a.href = e.target.result;
                  a.click();
                };
              }
            };
            xhr.send("countryCode=310101");
    2.一般文件下载:
    <button class="layui-btn search" style="margin-left: 50px;" v-if="hash==2"><a href="/admin/user/list/all/export" download="userlist.xls" style="color: #fff;">导出</a></button>
    3.与2实现效果差不多
    var $form = $('<form method="post"></form>');
    $form.attr('action', '/admin/user/list/all/export?countryCode=310101');
        $form.appendTo($('body'));
    $form.submit();
        $form.remove();
    
  • 相关阅读:
    bzoj 3155: Preprefix sum
    bzoj 1854: [Scoi2010]游戏
    UVA1608 不无聊的序列 Non-boring sequences
    UVA1747 【Swap Space】
    Luogu P5550 Chino的数列
    bzoj 1799: [Ahoi2009]self 同类分布
    bzoj 1054: [HAOI2008]移动玩具
    MATLAB工具箱,应用程序,软件和资源的精选清单
    论文格式排版Issue及解决办法
    《将博客搬至CSDN》
  • 原文地址:https://www.cnblogs.com/changyuqing/p/12162365.html
Copyright © 2020-2023  润新知