导出到Excel在边缘浏览器中不起作用

时间:2018-01-22 06:48:27

标签: javascript html

这是javascript函数

function fnExcelReport()
    {
          var tab_text="<table border='2px'><tr bgcolor='#87AFC6'>";
          var textRange; var j=0;
          tab = document.getElementById('tableID'); // id of table


          for(j = 0 ; j < tab.rows.length ; j++) 
          {     
                tab_text=tab_text+tab.rows[j].innerHTML+"</tr>";
                //tab_text=tab_text+"</tr>";
          }

          tab_text=tab_text+"</table>";

               var ua = window.navigator.userAgent;
              var msie = ua.indexOf("MSIE "); 

                 if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./))      // If Internet Explorer
                    {
                           txtArea1.document.open("txt/html","replace");
                           txtArea1.document.write(tab_text);
                           txtArea1.document.close();
                           txtArea1.focus(); 
                            sa=txtArea1.document.execCommand("SaveAs",true,"filename.xls");
                          }  
                  else                 //other browser not tested on IE 11
                      sa = window.open('data:application/vnd.ms-excel,' + encodeURIComponent(tab_text));  


                      return (sa);
      }

并在点击按钮

时调用
<button id="btnExport" onclick="fnExcelReport();"> EXPORT </button>

此代码适用于Chrome,Firefox和IE。这在Edge中不起作用。请帮忙。

1 个答案:

答案 0 :(得分:2)

你没有抓住你的if

Edge在window.navigator.userAgent中没有MSIE; 它会有这样的东西

Mozilla/5.0 (Windows NT 10.0; <64-bit tags>) AppleWebKit/<WebKit Rev> (KHTML, like Gecko) Chrome/<Chrome Rev> Safari/<WebKit Rev> Edge/<EdgeHTML Rev>.<Windows Build>

因此,您应该检查Edge

,而不是检查MSIE

请参阅此MS链接User-agent string changes

另请查看here

请参阅此小提琴https://jsfiddle.net/p8o42kdh/

几点。 1)而不是indexOf我使用匹配

ua.match(/Edge/)

2)要创建文件内容,我使用了blob

var blob = new Blob(["tab_text"], {type: 'data:application/vnd.ms-excel'});
window.navigator.msSaveBlob(blob, 'msSaveBlob_testFile.xls');