js excel导出 自定义excel文件名

本文介绍了一种将网页上的表格数据导出为Excel文件的方法,适用于多种浏览器环境,包括IE、Chrome等,并提供了实现这一功能的具体JavaScript代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 method1(tableid, name) {// 整个表格拷贝到EXCEL中---tableid:表格id,name:工作簿名称
	var ahtml = ' <a href="#" id="exportExcel" style="display:none" ></a>';//提供给下面自定义文件名的操作
	$("#"+tableid).after(ahtml);
	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 {
			alert(2);
			var fname = oXL.Application.GetSaveAsFilename("Excel.xls",
					"Excel Spreadsheets (*.xls), *.xls");
		} catch (e) {
			print("Nested catch caught " + e);
		} finally {
			alert(3);
			oWB.SaveAs(fname);

			oWB.Close(savechanges = false);
			// xls.visible = false;
			oXL.Quit();
			oXL = null;
			// 结束excel进程,退出完成
			// window.setInterval("Cleanup();",1);
			idTmr = window.setInterval("Cleanup();", 1);

		}

	} else {
		tableToExcel(tableid, name);
	}

}

function Cleanup() {
	window.clearInterval(idTmr);
	CollectGarbage();
}

var tableToExcel = (function() {
	var uri = 'data:application/vnd.ms-excel;base64,';
	var 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>';
	var base64 = function(s) {
		return window.btoa(unescape(encodeURIComponent(s)))
	};
	var 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
		}
		// <a href="#" id="exportExcel" style="display:none" ></a> 对应a标签
		document.getElementById("exportExcel").href = uri
				+ base64(format(template, ctx));
		document.getElementById("exportExcel").download = name + ".xls";//自定义文件名
		document.getElementById("exportExcel").click();
		// window.location.href = uri + base64(format(template, ctx));
	}
})();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值