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.
if (navigator.msSaveBlob) {
navigator.msSaveBlob(new Blob([csv], { type: 'text/csv;charset=utf-8;' }), "filename.csv");
}
My Code
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!