实现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的示例代码全部内容了,希望大家多多支持毛票票~