js下载导出Excel文件以及ie兼容问题

方法一 使用a标签下载

-- 使用a标签下载, download 属性,`url` 是所要下载的地址,注意IE浏览器不支持
`<a href={`${url}`} download>导出</a>`

方法二 接口返会的是二进制流, 兼容ie

        let url = '后端给的下载地址'
           //  获取时间戳
        let timestamp = new Date().getTime();
        // 获取XMLHttpRequest
        let xmlResquest = new XMLHttpRequest();
        //  发起请求
        xmlResquest.open("GET", `${url}`, true);
        // 设置请求头类型
        xmlResquest.setRequestHeader("Content-type", "application/json");
        //  设置请求token
        xmlResquest.responseType = "blob";
        //设置响应类型为blob类型,这一行一定要放在open后面,不然ie会报错!
        //  返回
        xmlResquest.onload = function (oEvent) {
            let content = xmlResquest.response;
            if('msSaveOrOpenBlob' in navigator){ // 兼容IE
                let filename = timestamp+ ".xls";
                let blob = new Blob([content], {type: 'application/vnd.ms-excel'});
                window.navigator.msSaveOrOpenBlob(blob, filename);

            } else{
                // 组装a标签
                let elink = document.createElement("a");
                // 设置下载文件名
                elink.download = timestamp + ".xls";
                elink.style.display = "none";
                let blob = new Blob([content]);
                elink.href = URL.createObjectURL(blob);
                document.body.appendChild(elink);
                elink.click();
                document.body.removeChild(elink);
            }

        };
        xmlResquest.upload.onprogress = function (e) {
            if (e.lengthComputable) { //lengthComputable 是 progress 的一个属性,表示资源是否可计算字节流
                let pross = (e.loaded / e.total) * 100;
                console.log(pross)
            }
        }
        xmlResquest.send();

   转载规则


《js下载导出Excel文件以及ie兼容问题》 echo丶若梦 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
前端缓存机制 前端缓存机制
1. 缓存的作用 加快资源加载速度,提高用户体验 节省带宽,服务器端资源无需重新传输;甚至一些缓存无需进行Http请求 服务器端缓存,如(CDN)可以减缓多用户并行请求的压力,减轻服务器压力 2. 缓存的分类 服务器缓存 如(CDN)
2020-07-30
下一篇 
判定是否互为字符重排 判定是否互为字符重排
给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。示例 1:输入: s1 = "abc", s2 = "bca"输出: true 示例 2:输
2020-07-27
  目录