网页导出table到excel的方法(支持IE和谷歌浏览器)

javascript 文章 2022-09-01 12:00 0 全屏看文

网页到处table到excel的方法(支持IE和以webkit为内核的比如谷歌浏览器、FireFox浏览器的方法)

代码如下:

var idTmr;
function getExplorer() {
	var explorer = window.navigator.userAgent ;
//ie
	if (explorer.indexOf("MSIE") >= 0) {
		return 'ie';
	}
//firefox
	else if (explorer.indexOf("Firefox") >= 0) {
		return 'Firefox';
	}
//Chrome
	else if(explorer.indexOf("Chrome") >= 0){
		return 'Chrome';
	}
//Opera
	else if(explorer.indexOf("Opera") >= 0){
		return 'Opera';
	}
//Safari
	else if(explorer.indexOf("Safari") >= 0){
		return 'Safari';
	}
}
function table2excel(tableid,name,filename) {
	if(getExplorer()=='ie')
	{
		var curTbl = document.getElementById(tableid);
		var oXL = new ActiveXObject("Excel.Application"); //创建AX对象excel
		var oWB = oXL.Workbooks.Add(); //获取workbook对象
		var xlsheet = oWB.Worksheets(1); //激活当前sheet
		var sel = document.body.createTextRange();
		sel.moveToElementText(curTbl); //把表格中的内容移到TextRange中
		sel.select(); //全选TextRange中内容
		sel.execCommand("Copy"); //复制TextRange中内容
		xlsheet.Paste(); //粘贴到活动的EXCEL中
		oXL.Visible = true; //设置excel可见属性

		try {
			var fname = oXL.Application.GetSaveAsFilename("Excel.xls", "Excel Spreadsheets (*.xls), *.xls");
//var fname="hfjdshauiwe";
		} catch (e) {
			print("Nested catch caught " + e);
		} finally {
			oWB.SaveAs(fname);
			oWB.Close(savechanges = false);
			oXL.Quit();
			oXL = null;
			idTmr = window.setInterval("Cleanup();", 1);
		}

	}
	else
	{
		tableToExcel(tableid,name,filename);
	}
}
function Cleanup() {
	window.clearInterval(idTmr);
	CollectGarbage();
}
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("dlink").href = uri + base64(format(template, ctx));
		document.getElementById("dlink").download = filename;
		document.getElementById("dlink").click();
	}
})()


使用代码如下:

<button type="button" id="Button4" class="btn btn-primary" onclick="table2excel('tblist','name','查询结果汇总.xls')">导出到EXCEL</button>


-EOF-