js生成Excel表格

js生成Excel表格,纯工具js。参考了点击打开链接网友的代码。
function utils($) {
	var $=$;

    /**
	 * 
	 * @param cols  数组类型   格式['序号','姓名','地址']
	 * @Param colsFiled     格式{'序号':'id','姓名':'name','地址':'address'}
	 * @param data  数组类型   格式[{'id':1,'name':张三,'address':成都},{'id':2,'name':李四,'address':成都}]
	 * @returns
	 */
	this.createExcle=function (cols,colsFiled,data){

		var table = $('<table></table>');
		var th = $('<tr></tr>');

		var index = 0;

		for(var i = 0; i < data.length; i++){

			var tr = $('<tr></tr>');
			var values = data[i];

			for(var j = 0; j < cols.length; j++){

				var fliedName = cols[j];
				var flied = colsFiled[fliedName];
				var value = values[flied];
				var td = $('<td></td>');
				td.html(value);

				if(index == 0){
					var tdTh = $('<td></td>');
					tdTh.html(fliedName);
					th.append(tdTh);
				}

				tr.append(td);
			}
			if(index == 0){
				table.append(th);
			}
			table.append(tr);
			index++;
		}
		table.attr('id','datatab');
		table.attr("style", "display: none");
		table.appendTo('body');
		method5('datatab');
		datatab.remove();
		function method5(tableid) {  
			
			var idTmr;
			
			var tableToExcel = (function() {  
				var uri = 'data:application/vnd.ms-excel;base64,',  
				template = '<html><head><meta charset="UTF-8"></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))  
				}  
			})()

			if(getExplorer()=='ie')  
			{  
				var curTbl = document.getElementById(tableid);  
				var oXL = new ActiveXObject("Excel.Application");  
				var oWB = oXL.Workbooks.Add();  
				var xlsheet = oWB.Worksheets(1);  
				var sel = document.body.createTextRange();  
				sel.moveToElementText(curTbl);  
				sel.select();  
				sel.execCommand("Copy");  
				xlsheet.Paste();  
				oXL.Visible = true;  

				try {  
					var fname = oXL.Application.GetSaveAsFilename("Excel.xls", "Excel Spreadsheets (*.xls), *.xls");  
				} 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)  
			}

			function Cleanup() {  
				window.clearInterval(idTmr);  
				CollectGarbage();  
			}
			
			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';  
				}  
			}
		} 
	}
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值