Export the HTML table to excel is not working in IE

后端 未结 4 1113
迷失自我
迷失自我 2020-11-30 13:18

Exporting HTML table to Excel is working fine in Chrome and Firefox but it is not working in Internet Explorer 10.

var tableToExcel = (function() {
  var uri         


        
相关标签:
4条回答
  • 2020-11-30 13:42

    Found a community version of SheetJS that works like a cham!

    No warning like "The file format and extension of 'file.xls' don't match. This file could be corrupted or unsafe."

    Import the library

        <script src="../Scripts/xlsx.full.min.js"></script>
    

    Paste the function that calls the library

    function doit(type, fn, dl) {
            var elt = document.getElementById('data-table');
            var wb = XLSX.utils.table_to_book(elt, { sheet: "Sheet JS" });
            return dl ?
                XLSX.write(wb, { bookType: type, bookSST: true, type: 'base64' }) :
                XLSX.writeFile(wb, fn || ('test.' + (type || 'xlsx')));
        }
    

    Trigger the function using a button or anything that suit your needs.

    <button id="btnExport" onclick="doit('xlsx');"> EXPORT </button>
    

    Sample code can be found in this page

    0 讨论(0)
  • 2020-11-30 13:48

    Excel Export Script works on IE7+ Mozilla & Chrome ===========================================================

    function fnExcelReport()
    {
      var tab_text="<table border='2px'><tr bgcolor='#87AFC6'>";
      var textRange; var j=0;
      tab = document.getElementById('headerTable'); // 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>";
      tab_text= tab_text.replace(/<A[^>]*>|<\/A>/g, "");//remove if u want links in your table
      tab_text= tab_text.replace(/<img[^>]*>/gi,""); // remove if u want images in your table
      tab_text= tab_text.replace(/<input[^>]*>|<\/input>/gi, ""); // reomves input params
    
      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,"Say Thanks to Sumit.xls");
      }
      else                 //other browser not tested on IE 11
      sa = window.open('data:application/vnd.ms-excel,' + encodeURIComponent(tab_text));
    
    
      return (sa);
    }
    

    Just Create a blank iframe

    <iframe id="txtArea1" style="display:none"></iframe>
    

    Call this function on

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

    JSFiddle (Note only tested in IE 10): http://jsfiddle.net/x0av0ax5/1/

    0 讨论(0)
  • 2020-11-30 13:58

    data uri does not support IE, maybe you post your excel xml data to server to generate the file.

    And you can use Downloadify (Flash) to generate the file.

    https://github.com/dcneiner/Downloadify

    0 讨论(0)
  • 2020-11-30 14:04

    Please see this plugin which uses BLOB. https://github.com/rainabba/jquery-table2excel

    if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) // If Internet Explorer
    {
      if (typeof Blob !== "undefined") {
        //use blobs if we can
        tab_text = [tab_text];
        //convert to array
        var blob1 = new Blob(tab_text, {
          type: "text/html"
        });
        window.navigator.msSaveBlob(blob1, "download.xls");
      } else {
        txtArea1.document.open("txt/html", "replace");
        txtArea1.document.write(tab_text);
        txtArea1.document.close();
        txtArea1.focus();
        sa = txtArea1.document.execCommand("SaveAs", true, "download.xls");
        return (sa);
      }
    } 
    
    else
      window.location.href = 'data:application/vnd.ms-excel,' + encodeURIComponent(tab_text);
    
    0 讨论(0)
提交回复
热议问题