我有两个函数可以将html表导出到excel中。第一个“fnExcelReport”适用于IE浏览器,第二个“tableToExcel”适用于所有其他浏览器:
在IE的情况下导出(来自here):
<script type="text/javascript">
function fnExcelReport(tablename, worksheetname, filename){
var tab_text="<table border='2px'><tr bgcolor='#87AFC6'>";
var textRange; var j=0;
tab = document.getElementById('projectsTable'); // 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 ");
txtArea1.document.open("txt/html","replace");
txtArea1.document.write(tab_text);
txtArea1.document.close();
txtArea1.focus();
sa=txtArea1.document.execCommand("SaveAs",true,filename);
return (sa);
}
</script>
除IE之外的导出函数(由here获得yuryi galanter):
<script type="text/javascript">
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, filename) {
if (!table.nodeType) table = document.getElementById(table)
var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML}
document.getElementById("downloadListofProjects").href = uri + base64(format(template, ctx));
document.getElementById("downloadListofProjects").download = filename;
document.getElementById("downloadListofProjects").click();
//window.location.href = uri + base64(format(template, ctx))
}
})()
</script>
两者都用于导出html表,但我的问题是excel中的导出输出在两种情况下都不相同。如果从Internet Explorer(IE)导出完成,导出的表数据之外的区域是白色的,字体也很小,我也不知道如何设置从全部导出完成后我得到的工作表名称其它浏览器。所以,我想要两件事:
我怎样才能实现这一目标? TIA