[英]Export the HTML table to excel is not working in IE
將HTML表導出到Excel在Chrome和Firefox中運行良好,但在Internet Explorer 10中無效。
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]--></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))
}
})()
Excel導出腳本適用於IE7 + Mozilla和Chrome ========================================= ==================
function fnExcelReport()
{
var tab_text="<table border='2px'><tr bgcolor='#87AFC6'>";
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+"</tr>";
//tab_text=tab_text+"</tr>";
}
tab_text=tab_text+"</table>";
tab_text= tab_text.replace(/<A[^>]*>|<\/A>/g, "");//remove if u want links in your table
tab_text= tab_text.replace(/<img[^>]*>/gi,""); // remove if u want images in your table
tab_text= tab_text.replace(/<input[^>]*>|<\/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
<iframe id="txtArea1" style="display:none"></iframe>
調用此功能
<button id="btnExport" onclick="fnExcelReport();"> EXPORT </button>
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)生成文件。
沒有像“ file.xls ” 的文件格式和擴展名不匹配的 警告 。此文件可能已損壞或不安全。
導入庫
<script src="../Scripts/xlsx.full.min.js"></script>
粘貼調用庫的函數
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')));
}
使用按鈕或任何適合您需求的功能觸發功能。
<button id="btnExport" onclick="doit('xlsx');"> EXPORT </button>
示例代碼可以在此頁面中找到
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.