Reputation: 66
I've researched this for a couple of days now, and come across this one which works fine for Chrome and Firefox, but not IE. I've come across this one from stackoverflow that is supposedly IE friendly, but chokes on var objExcel = new ActiveXObject("Excel.Application");
. I've tried xlsx.js, but can't use flash.
I've researched CSV, but come accross similar issues with URI's in IE causing chokes.
I'm trying to keep it client side ( as I've already got the data stored locally ), but I have to have IE 9+ available ( as my primary users will be using IE9 [not by my choice]).
Any solutions, or am I stuck going server-side for this?
Upvotes: 2
Views: 664
Reputation: 13336
Unfortunately I don't have access to IE9. Does this solution work for you? http://bl.ocks.org/insin/1031969
How about setting a data:
url, like this:
window.location.href = 'data:application/vnd.ms-excel;base64,PGh0bWwgeG1sbnM6bz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6b2ZmaWNlIiB4bWxuczp4PSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTpleGNlbCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy1odG1sNDAiPjxoZWFkPjwhLS1baWYgZ3RlIG1zbyA5XT48eG1sPjx4OkV4Y2VsV29ya2Jvb2s+PHg6RXhjZWxXb3Jrc2hlZXRzPjx4OkV4Y2VsV29ya3NoZWV0Pjx4Ok5hbWU+VzNDIEV4YW1wbGUgVGFibGU8L3g6TmFtZT48eDpXb3Jrc2hlZXRPcHRpb25zPjx4OkRpc3BsYXlHcmlkbGluZXMvPjwveDpXb3Jrc2hlZXRPcHRpb25zPjwveDpFeGNlbFdvcmtzaGVldD48L3g6RXhjZWxXb3Jrc2hlZXRzPjwveDpFeGNlbFdvcmtib29rPjwveG1sPjwhW2VuZGlmXS0tPjwvaGVhZD48Ym9keT48dGFibGU+PGNhcHRpb24+Q09ERS1QQUdFIFNVUFBPUlQgSU4gTUlDUk9TT0ZUIFdJTkRPV1M8L2NhcHRpb24+PGNvbGdyb3VwIGFsaWduPSJjZW50ZXIiPjwvY29sZ3JvdXA+PGNvbGdyb3VwIGFsaWduPSJsZWZ0Ij48L2NvbGdyb3VwPjxjb2xncm91cCBzcGFuPSIyIiBhbGlnbj0iY2VudGVyIj48L2NvbGdyb3VwPjxjb2xncm91cCBzcGFuPSIzIiBhbGlnbj0iY2VudGVyIj48L2NvbGdyb3VwPjx0aGVhZCB2YWxpZ249InRvcCI+PHRyPjx0aD5Db2RlLVBhZ2U8YnI+SUQ8L3RoPjx0aD5OYW1lPC90aD48dGg+QUNQPC90aD48dGg+T0VNQ1A8L3RoPjx0aD5XaW5kb3dzPGJyPk5UIDMuMTwvdGg+PHRoPldpbmRvd3M8YnI+TlQgMy41MTwvdGg+PHRoPldpbmRvd3M8YnI+OTU8L3RoPjwvdHI+PC90aGVhZD48dGJvZHk+PHRyPjx0ZD4xMjAwPC90ZD48dGQgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICMwMGY7IGNvbG9yOiAjZmZmIj5Vbmljb2RlIChCTVAgb2YgSVNPL0lFQy0xMDY0Nik8L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjx0ZD5YPC90ZD48dGQ+WDwvdGQ+PHRkPio8L3RkPjwvdHI+PHRyPjx0ZD4xMjUwPC90ZD48dGQgc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkIj5XaW5kb3dzIDMuMSBFYXN0ZXJuIEV1cm9wZWFuPC90ZD48dGQ+WDwvdGQ+PHRkPjwvdGQ+PHRkPlg8L3RkPjx0ZD5YPC90ZD48dGQ+WDwvdGQ+PC90cj48dHI+PHRkPjEyNTE8L3RkPjx0ZD5XaW5kb3dzIDMuMSBDeXJpbGxpYzwvdGQ+PHRkPlg8L3RkPjx0ZD48L3RkPjx0ZD5YPC90ZD48dGQ+WDwvdGQ+PHRkPlg8L3RkPjwvdHI+PHRyPjx0ZD4xMjUyPC90ZD48dGQ+V2luZG93cyAzLjEgVVMgKEFOU0kpPC90ZD48dGQ+WDwvdGQ+PHRkPjwvdGQ+PHRkPlg8L3RkPjx0ZD5YPC90ZD48dGQ+WDwvdGQ+PC90cj48dHI+PHRkPjEyNTM8L3RkPjx0ZD5XaW5kb3dzIDMuMSBHcmVlazwvdGQ+PHRkPlg8L3RkPjx0ZD48L3RkPjx0ZD5YPC90ZD48dGQ+WDwvdGQ+PHRkPlg8L3RkPjwvdHI+PHRyPjx0ZD4xMjU0PC90ZD48dGQ+V2luZG93cyAzLjEgVHVya2lzaDwvdGQ+PHRkPlg8L3RkPjx0ZD48L3RkPjx0ZD5YPC90ZD48dGQ+WDwvdGQ+PHRkPlg8L3RkPjwvdHI+PHRyPjx0ZD4xMjU1PC90ZD48dGQ+SGVicmV3PC90ZD48dGQ+WDwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPlg8L3RkPjwvdHI+PHRyPjx0ZD4xMjU2PC90ZD48dGQ+QXJhYmljPC90ZD48dGQ+WDwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPlg8L3RkPjwvdHI+PHRyPjx0ZD4xMjU3PC90ZD48dGQ+QmFsdGljPC90ZD48dGQ+WDwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPlg8L3RkPjwvdHI+PHRyPjx0ZD4xMzYxPC90ZD48dGQ+S29yZWFuIChKb2hhYik8L3RkPjx0ZD5YPC90ZD48dGQ+PC90ZD48dGQ+PC90ZD48dGQ+Kio8L3RkPjx0ZD5YPC90ZD48L3RyPjwvdGJvZHk+PHRib2R5Pjx0cj48dGQ+NDM3PC90ZD48dGQ+TVMtRE9TIFVuaXRlZCBTdGF0ZXM8L3RkPjx0ZD48L3RkPjx0ZD5YPC90ZD48dGQ+WDwvdGQ+PHRkPlg8L3RkPjx0ZD5YPC90ZD48L3RyPjx0cj48dGQ+NzA4PC90ZD48dGQ+QXJhYmljIChBU01PIDcwOCk8L3RkPjx0ZD48L3RkPjx0ZD5YPC90ZD48dGQ+PC90ZD48dGQ+PC90ZD48dGQ+WDwvdGQ+PC90cj48dHI+PHRkPjcwOTwvdGQ+PHRkPkFyYWJpYyAoQVNNTyA0NDkrLCBCQ09OIFY0KTwvdGQ+PHRkPjwvdGQ+PHRkPlg8L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjx0ZD5YPC90ZD48L3RyPjx0cj48dGQ+NzEwPC90ZD48dGQ+QXJhYmljIChUcmFuc3BhcmVudCBBcmFiaWMpPC90ZD48dGQ+PC90ZD48dGQ+WDwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPlg8L3RkPjwvdHI+PHRyPjx0ZD43MjA8L3RkPjx0ZD5BcmFiaWMgKFRyYW5zcGFyZW50IEFTTU8pPC90ZD48dGQ+PC90ZD48dGQ+WDwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPlg8L3RkPjwvdHI+PC90Ym9keT48L3RhYmxlPjwvYm9keT48L2h0bWw+';
If that doesn't work, then I think you have two options:
Use a server-side component to prepare the download. This can be a very simple component that just returns a GET parameter as a file.
Display a page to the user that contains the data, and have them copy it into Excel. You could use tab-delimited text, or an HTML table - either one of those should paste nicely into a spreadsheet.
Upvotes: 1