zoukankan      html  css  js  c++  java
  • 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();
    
  • 相关阅读:
    DataGridView 移动行
    DataGridView 显示提示信息
    模块和类的区别
    C# 流总结
    很口语I'm on my way
    读书笔记_Effective_C++_条款二十三:宁以nonmember、nonfriend替换member函数
    PDB文件:每个开发人员都必须知道的
    qq农场,数据抓包分析,实现源码,图片讲解
    连连看外挂消去算法分析
    关于“服务器提交了协议冲突. Section=ResponseStatusLine"问题请
  • 原文地址:https://www.cnblogs.com/changyuqing/p/12162365.html
Copyright © 2011-2022 走看看