Click here to Skip to main content
15,888,977 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
Hi,

I have this code that i have been using for a long time and this works very well in Chrome, Firefox and even Opera. But I noticed that it does not work in Internet explorer. I have found a lot of things like to use ActiveX but this seems to need the user to change internet settings and that is not what we want to do.

I also found this code that supposedly would make it work in Internet Explorer but i have no idea where it would fit in to my code.
JavaScript
if (navigator.msSaveBlob) { // IE 10+ 
navigator.msSaveBlob(new Blob([csv], { type: 'text/csv;charset=utf-8;' }), "filename.csv"); 
}



My Code
JavaScript
var tableToExcel = (function () {
       var uri = 'data:application/vnd.ms-excel;base64,'
       , template = '<html xmlns:o="urn:schemas-microsoft-com:office:office"      
         xmlns:x="urn:schemas-microsoft-com:office:excel"    
         xmlns="http://www.w3.org/TR/REC-
         html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook>   
        <x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name> 
        <x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions> 
        </x:ExcelWorksheet></x:ExcelWorksheets>
        </x:ExcelWorkbook></xml><![endif]--><meta http-equiv="content-type" 
        content="text/plain; charset=UTF-8"/></head><body><table>{table}
         </table></body></html>'
         base64 = function (s) { return window.btoa(unescape(encodeURIComponent(s)))}, 
         format = function (s, c) { return s.replace(/{(\w+)}/g, function (m, p) {     
         return c[p]; }) }
         return function (table, name) {
              if (!table.nodeType) table = document.getElementById(table)
              var ctx = { worksheet: name || 'Worksheet', table: table.innerHTML }
              window.location.href = uri + base64(format(template, ctx))
           }
        })

Help would really be apprecialted!
Posted

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900