简体   繁体   中英

Any way to export either excel or csv file from Javascript in IE9 or Higher

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?

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM