Welcome

首页 / 脚本样式 / JavaScript / 实现easyui的datagrid导出为excel的示例代码

之前有介绍过如何实现easyui里datagrid内容的打印,今天给大家介绍下如何实现datagrid内容导出为excel文件。以下为代码实现:
export.js
function ChangeToTable(printDatagrid) {var tableString = "<table cellspacing="0" class="pb">";var frozenColumns = printDatagrid.datagrid("options").frozenColumns; // 得到frozenColumns对象var columns = printDatagrid.datagrid("options").columns;// 得到columns对象var nameList = new Array();// 载入titleif (typeof columns != "undefined" && columns != "") {$(columns).each(function (index) {tableString += "
<tr>";if (typeof frozenColumns != "undefined" && typeof frozenColumns[index] != "undefined") {for (var i = 0; i < frozenColumns[index].length; ++i) {if (!frozenColumns[index][i].hidden) {tableString += "
<th width="" + frozenColumns[index][i].width + """;if (typeof frozenColumns[index][i].rowspan != "undefined" && frozenColumns[index][i].rowspan > 1) {tableString += " rowspan="" + frozenColumns[index][i].rowspan + """;}if (typeof frozenColumns[index][i].colspan != "undefined" && frozenColumns[index][i].colspan > 1) {tableString += " colspan="" + frozenColumns[index][i].colspan + """;}if (typeof frozenColumns[index][i].field != "undefined" && frozenColumns[index][i].field != "") {nameList.push(frozenColumns[index][i]);}tableString += ">" + frozenColumns[0][i].title + "</th>";}}}for (var i = 0; i < columns[index].length; ++i) {if (!columns[index][i].hidden) {tableString += "
<th width="" + columns[index][i].width + """;if (typeof columns[index][i].rowspan != "undefined" && columns[index][i].rowspan > 1) {tableString += " rowspan="" + columns[index][i].rowspan + """;}if (typeof columns[index][i].colspan != "undefined" && columns[index][i].colspan > 1) {tableString += " colspan="" + columns[index][i].colspan + """;}if (typeof columns[index][i].field != "undefined" && columns[index][i].field != "") {nameList.push(columns[index][i]);}tableString += ">" + columns[index][i].title + "</th>";}}tableString += "
</tr>";});}// 载入内容var rows = printDatagrid.datagrid("getRows"); // 这段代码是获取当前页的所有行for (var i = 0; i < rows.length; ++i) {tableString += "
<tr>";for (var j = 0; j < nameList.length; ++j) {var e = nameList[j].field.lastIndexOf("_0");tableString += "
<td";if (nameList[j].align != "undefined" && nameList[j].align != "") {tableString += " style="text-align:" + nameList[j].align + ";"";}tableString += ">";if (e + 2 == nameList[j].field.length) {tableString += rows[i][nameList[j].field.substring(0, e)];}elsetableString += rows[i][nameList[j].field];tableString += "</td>";}tableString += "
</tr>";}tableString += "
</table>";return tableString;}function Export(strXlsName, exportGrid) {var f = $("<form action="/export.aspx" method="post" id="fm1"></form>");var i = $("<input type="hidden" id="txtContent" name="txtContent" />");var l = $("<input type="hidden" id="txtName" name="txtName" />");i.val(ChangeToTable(exportGrid));i.appendTo(f);l.val(strXlsName);l.appendTo(f);f.appendTo(document.body).submit();document.body.removeChild(f);}
export.aspx
protected void Page_Load(object sender, EventArgs e){Response.Clear();Response.Buffer = true;Response.Charset = "utf-8";Response.ContentEncoding = System.Text.Encoding.UTF8;Response.AppendHeader("content-disposition", "attachment;filename="" + HttpUtility.HtmlEncode(Request["txtName"]??DateTime.Now.ToString("yyyyMMdd")) + ".xls"");Response.ContentType = "Application/ms-excel";Response.Write("<html>
<head>
");Response.Write("<style type="text/css">
.pb{font-size:13px;border-collapse:collapse;} "+"
.pb th{font-weight:bold;text-align:center;border:0.5pt solid windowtext;padding:2px;} " +"
.pb td{border:0.5pt solid windowtext;padding:2px;}
</style>
</head>
");Response.Write("<body>
" + Request["txtContent"] + "
</body>
</html>");Response.Flush();Response.End(); }
其中export.aspx为了防止前台页面内容干扰,前台页面只留:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="export.aspx.cs" Inherits="newland.WebUI.export" ValidateRequest="false" %> 
这句话,其他的全部删除。
调用方法:
<a href="javascript:void(0);" onclick="Export("导出excel", $("#grid"));">导出</a> 
以上就是小编为大家带来的实现easyui的datagrid导出为excel的示例代码全部内容了,希望大家多多支持脚本之家~