实现easyui的datagrid导出为excel的示例代码
之前有介绍过如何实现easyui里datagrid内容的打印,今天给大家介绍下如何实现datagrid内容导出为excel文件。以下为代码实现:
export.js
functionChangeToTable(printDatagrid){ vartableString='<tablecellspacing="0"class="pb">'; varfrozenColumns=printDatagrid.datagrid("options").frozenColumns;//得到frozenColumns对象 varcolumns=printDatagrid.datagrid("options").columns;//得到columns对象 varnameList=newArray(); //载入title if(typeofcolumns!='undefined'&&columns!=''){ $(columns).each(function(index){ tableString+='\n<tr>'; if(typeoffrozenColumns!='undefined'&&typeoffrozenColumns[index]!='undefined'){ for(vari=0;i<frozenColumns[index].length;++i){ if(!frozenColumns[index][i].hidden){ tableString+='\n<thwidth="'+frozenColumns[index][i].width+'"'; if(typeoffrozenColumns[index][i].rowspan!='undefined'&&frozenColumns[index][i].rowspan>1){ tableString+='rowspan="'+frozenColumns[index][i].rowspan+'"'; } if(typeoffrozenColumns[index][i].colspan!='undefined'&&frozenColumns[index][i].colspan>1){ tableString+='colspan="'+frozenColumns[index][i].colspan+'"'; } if(typeoffrozenColumns[index][i].field!='undefined'&&frozenColumns[index][i].field!=''){ nameList.push(frozenColumns[index][i]); } tableString+='>'+frozenColumns[0][i].title+'</th>'; } } } for(vari=0;i<columns[index].length;++i){ if(!columns[index][i].hidden){ tableString+='\n<thwidth="'+columns[index][i].width+'"'; if(typeofcolumns[index][i].rowspan!='undefined'&&columns[index][i].rowspan>1){ tableString+='rowspan="'+columns[index][i].rowspan+'"'; } if(typeofcolumns[index][i].colspan!='undefined'&&columns[index][i].colspan>1){ tableString+='colspan="'+columns[index][i].colspan+'"'; } if(typeofcolumns[index][i].field!='undefined'&&columns[index][i].field!=''){ nameList.push(columns[index][i]); } tableString+='>'+columns[index][i].title+'</th>'; } } tableString+='\n</tr>'; }); } //载入内容 varrows=printDatagrid.datagrid("getRows");//这段代码是获取当前页的所有行 for(vari=0;i<rows.length;++i){ tableString+='\n<tr>'; for(varj=0;j<nameList.length;++j){ vare=nameList[j].field.lastIndexOf('_0'); tableString+='\n<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)]; } else tableString+=rows[i][nameList[j].field]; tableString+='</td>'; } tableString+='\n</tr>'; } tableString+='\n</table>'; returntableString; } functionExport(strXlsName,exportGrid){ varf=$('<formaction="/export.aspx"method="post"id="fm1"></form>'); vari=$('<inputtype="hidden"id="txtContent"name="txtContent"/>'); varl=$('<inputtype="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
protectedvoidPage_Load(objectsender,EventArgse) { 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>\n<head>\n"); Response.Write("<styletype=\"text/css\">\n.pb{font-size:13px;border-collapse:collapse;}"+ "\n.pbth{font-weight:bold;text-align:center;border:0.5ptsolidwindowtext;padding:2px;}"+ "\n.pbtd{border:0.5ptsolidwindowtext;padding:2px;}\n</style>\n</head>\n"); Response.Write("<body>\n"+Request["txtContent"]+"\n</body>\n</html>"); Response.Flush(); Response.End(); }
其中export.aspx为了防止前台页面内容干扰,前台页面只留:
<%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="export.aspx.cs"Inherits="newland.WebUI.export"ValidateRequest="false"%>
这句话,其他的全部删除。
调用方法:
<ahref="javascript:void(0);"onclick="Export('导出excel',$('#grid'));">导出</a>
以上就是小编为大家带来的实现easyui的datagrid导出为excel的示例代码全部内容了,希望大家多多支持毛票票~