使用纯前端代码导出excel

一,导出excel大致分为两种一种是通过纯前端代码导出,一种是通过后台的api接口导出

两者对比的适合场景:

使用纯前端代码导出excel,
**优点:**适用于只导出当前界面展示的数据,还支持一个方法全系统调用,通用性好,比如报表数据,是用来展示给用户看的,所以可以直接用纯前端代码导出,
**缺点:**不利于扩展,只能导出界面上展示的哪个列,跟数据,还不能改
通过后台的api接口
**优点:**有利于扩展,导出的数据都是根据sql去数据库中查询得到的,直接用easypoi里面提供的导出excel方法,特别方便,一行实现代码导出
**缺点:**使用easypoi里面提供的导出excel方法的缺点好像就是依赖实体,如果你的sql中存在多张表的数据,又没有这样的一个实体存储,好像是不能导出的,所以只能新建一个实体,用来存储sql查询出来的值,所以是比较麻烦的

这是只讲使用纯前端代码导出excel
原理: 其实原理很简单,就是将前端展示的值使用table标签装起来,使用js编写一个方法,打开一个excel,然后新建一个sheet,将table里面的内容移动到excel里面去

function initTable(tableId){
	$("body").append("<div class='tableDiv' style='display:none'><a id='dlink' href='' style='display: none;'></a><table id='tableExcel' width='100%'></table></div>")
	//获取头文件
	$("#"+tableId).find("thead").find("tr").each(function(){
		var _tr = $(this);
		$("#tableExcel").append("<tr></tr>");
		_tr.find("th").each(function(){
			var _th = $(this);
			var colspan = _th.attr("colspan");
			var rowspan = _th.attr("rowspan");
			$("#tableExcel tr:last").append("<td align='left' bgcolor='#a7c4de' colspan='"+(colspan==null||colspan==""?1:colspan)+
					"' rowspan='"+(rowspan==null||rowspan==""?1:rowspan)+"'>"+getTdInfo(_th)+"</td>");
		});
	});
	//获取数值部分
	$("#"+tableId).find("tbody").find("tr").each(function(){
		var _tr = $(this);
		$("#tableExcel").append("<tr></tr>");
		_tr.find("td").each(function(){
			var _td = $(this);
			var colspan = _td.attr("colspan");
			var rowspan = _td.attr("rowspan");
			$("#tableExcel tr:last").append("<td align='left' colspan='"+(colspan==null||colspan==""?1:colspan)+
					"' rowspan='"+(rowspan==null||rowspan==""?1:rowspan)+"'>"+getTdInfo(_td)+"</td>");
		});
	});
}

function exportExcel(tableid,name,filename) { 
	initTable(tableid); //初始化一个table模板
    if(getExplorer()=='ie') { 
        var curTbl = document.getElementById("tableExcel"); 
        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(filename, "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("tableExcel",name,filename) 
    } 
    $(".tableDiv").remove();
} 

希望我这两件事可以坚持到底 1,写博客 2,健身

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值