将HTML表导出为excel在IE中无效
将HTML表格导出到Excel在Chrome和Firefox中运行良好,但在Internet Explorer 10中无效。
var tableToExcel = (function() { var uri = 'data:application/vnd.ms-excel;base64,', template = '{table}
', 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)) } })()
Excel导出脚本适用于IE7 + Mozilla和Chrome ========================================= ==================
function fnExcelReport() { var tab_text=""; 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+" "; //tab_text=tab_text+""; } tab_text=tab_text+"
"; tab_text= tab_text.replace(/]*>|<\/A>/g, "");//remove if u want links in your table tab_text= tab_text.replace(/]*>/gi,""); // remove if u want images in your table tab_text= tab_text.replace(/]*>|<\/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); }
只需创建一个空白iframe
调用此function
JSFiddle(注意仅在IE 10中测试): http : //jsfiddle.net/x0av0ax5/1/
请看这个使用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);
数据uri不支持IE,也许您将excel xml数据发布到服务器以生成文件。
您可以使用Downloadify(Flash)生成文件。
找到了一个像cham一样的SheetJS的社区版本!
没有像“ file.xls ” 的文件格式和扩展名不匹配的 警告 。此文件可能已损坏或不安全。
导入库
粘贴调用库的函数
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'))); }
使用按钮或任何适合您需求的function触发function。
示例代码可以在此页面中找到