编程经验:不依赖office组件的Excel简单导出

前端之家收集整理的这篇文章主要介绍了编程经验:不依赖office组件的Excel简单导出前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

protected void btnDataOut_Click(object sender,EventArgs e) @H_502_17@

{ @H_502_17@

DataToExcel dte = new DataToExcel(); @H_502_17@

DataTable dt = null; @H_502_17@

if (sid > 0) @H_502_17@

{ @H_502_17@

dt = Users.GetAuthUserListByGroupidList("8",sid.ToString()); @H_502_17@

} @H_502_17@

else @H_502_17@

{ dt = Users.GetAuthUserListByGroupid(8); } @H_502_17@

UserInfo userInfo = new UserInfo(); @H_502_17@

if (dt.Rows.Count > 0) @H_502_17@

{ @H_502_17@

dt = ChangeSchema(dt); @H_502_17@

foreach (DataRow dr in dt.Rows) @H_502_17@

{ @H_502_17@

userInfo = AdminUsers.GetUserInfo(Convert.ToInt32(dr["uid"].ToString().Trim())); @H_502_17@

dr["realname"] = userInfo.Realname.ToString().Trim(); @H_502_17@

dr["mobile"] = userInfo.Mobile.ToString().Trim(); @H_502_17@

dr["organization"] = filterIds(dr["organization"].ToString().Trim()); @H_502_17@

dr["email"] = dr["email"].ToString().Trim(); @H_502_17@

dr["username"] = dr["username"].ToString().Trim(); @H_502_17@

if (dr["gender"].ToString() == "0") dr["gender"] = ""; @H_502_17@

if (dr["gender"].ToString() == "1") dr["gender"] = ""; @H_502_17@

} @H_502_17@

} @H_502_17@

for (int i = 0; i < dt.Columns.Count; ) @H_502_17@

{ @H_502_17@

if (dt.Columns[i].ColumnName.Contains("username") || dt.Columns[i].ColumnName.Contains("realname") || dt.Columns[i].ColumnName.Contains("mobile") || dt.Columns[i].ColumnName.Contains("gender") || dt.Columns[i].ColumnName == "email" || dt.Columns[i].ColumnName.Contains("organization")) @H_502_17@

{ i++; } @H_502_17@

else @H_502_17@

{ @H_502_17@

dt.Columns.Remove(dt.Columns[i].ColumnName); @H_502_17@

dt.AcceptChanges(); @H_502_17@

} @H_502_17@

} @H_502_17@

DataTable dtAuth = new DataTable(); @H_502_17@

dtAuth.Columns.Add("真实姓名",typeof(string)); @H_502_17@

dtAuth.Columns.Add("性别",typeof(string)); @H_502_17@

dtAuth.Columns.Add("用户名",typeof(string)); @H_502_17@

dtAuth.Columns.Add("手机号码",typeof(string)); @H_502_17@

dtAuth.Columns.Add("所属企业",typeof(string)); @H_502_17@

dtAuth.Columns.Add("E_mail",typeof(string)); @H_502_17@

foreach (DataRow dr in dt.Rows) @H_502_17@

{ @H_502_17@

dtAuth.Rows.Add(new Object[] { dr["realname"],dr["gender"],dr["username"],dr["mobile"],dr["organization"],dr["email"] }); @H_502_17@

} @H_502_17@

DataTable2Excel(dtAuth,"userinfo"); @H_502_17@

} @H_502_17@

@H_502_17@

//dtData是要导出为ExcelDataTable,FileName是要导出的Excel文件(不加.xls) @H_502_17@

private void DataTable2Excel(System.Data.DataTable dtData,String FileName) @H_502_17@

{ @H_502_17@

System.Web.UI.WebControls.GridView dgExport = null; @H_502_17@

//当前对话 @H_502_17@

System.Web.HttpContext curContext = System.Web.HttpContext.Current; @H_502_17@

//IO用于导出并返回excel文件 @H_502_17@

System.IO.StringWriter strWriter = null; @H_502_17@

System.Web.UI.HtmlTextWriter htmlWriter = null; @H_502_17@

if (dtData != null) @H_502_17@

{ @H_502_17@

//设置编码和附件格式 @H_502_17@

//System.Web.HttpUtility.UrlEncode(FileName,System.Text.Encoding.UTF8)作用是方式中文文件名乱码 @H_502_17@

curContext.Response.Charset = "GB2312"; @H_502_17@

curContext.Response.ContentEncoding = System.Text.Encoding.UTF8; @H_502_17@

curContext.Response.AddHeader("content-disposition","attachment;filename=" + System.Web.HttpUtility.UrlEncode(FileName,System.Text.Encoding.UTF8) + ".xls"); @H_502_17@

curContext.Response.ContentType = "application nd.ms-excel"; @H_502_17@

//导出Excel文件 @H_502_17@

strWriter = new System.IO.StringWriter(); @H_502_17@

htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter); @H_502_17@

dgExport = new System.Web.UI.WebControls.GridView(); @H_502_17@

dgExport.DataSource = dtData.DefaultView; @H_502_17@

dgExport.AllowPaging = false; @H_502_17@

dgExport.DataBind(); @H_502_17@

//下载到客户端 @H_502_17@

dgExport.RenderControl(htmlWriter); @H_502_17@

curContext.Response.Write(strWriter.ToString()); @H_502_17@

curContext.Response.End(); @H_502_17@

} @H_502_17@

}

猜你在找的设计模式相关文章