C# ASP.NET中如何将Dataset导出为Excel
作者: 李嘉 日期: 2010-06-08 23:11
前阵子做的TCAT Survey项目中, 用到一个功能, 就是将现有的Dataset导出为Excel, 看看团队开发的一个朋友写了一段代码, 可以直接将Dataset输出为Excel, 我们来看看他是怎么写的:
protected void btnExport_Click(object sender, EventArgs e)
{
DataSet ds = ViewState["ExDs"] as DataSet;
DataTable dtData = ds.Tables[0];
dtData.Columns.Remove("SurveyGuid");
dtData.Columns.Remove("IsFinished");
dtData.Columns.Remove("ProgramID");
dtData.Columns.Remove("FillLink");
dtData.Columns.Remove("SubjectID");
foreach (DataRow drData in dtData.Rows)
{
drData["Password"] = DESEncrypt.DecryptPsw(drData["Password"].ToString());
}
dtData.AcceptChanges();
System.Web.UI.WebControls.GridView dgExport = null;
System.Web.HttpContext curContext = System.Web.HttpContext.Current;
System.IO.StringWriter strWriter = null;
System.Web.UI.HtmlTextWriter htmlWriter = null;
System.Web.HttpContext.Current.Response.Clear();
System.Web.HttpContext.Current.Response.HeaderEncoding = System.Text.Encoding.GetEncoding("utf-8");
curContext.Response.ContentType = "application/vnd.ms-excel";
string fileName = "SurveySubject_" + DateTime.Now.ToFileTimeUtc() + ".xls";
curContext.Response.AppendHeader("Content-Disposition", "attachment;filename=" + fileName);
curContext.Response.ContentEncoding = System.Text.Encoding.UTF8;
System.Web.HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.Default;
curContext.Response.Charset = "";
strWriter = new System.IO.StringWriter();
htmlWriter = new System.Web.UI.HtmlTextWriter( strWriter );
dgExport = new System.Web.UI.WebControls.GridView();
dgExport.DataSource = dtData.DefaultView;
dgExport.AllowPaging = false;
dgExport.DataBind();
dgExport.RenderControl( htmlWriter );
curContext.Response.Write( strWriter.ToString() );
curContext.Response.End();
}
这段代码中, 实际上页面中不存在Gridview, 他是先新建一个虚的GridView, 再填充内容后直接输出为Excel格式, 很不错, 收藏一下. 正好今天做的多多房项目也用到.
订阅
上一篇
返回
下一篇
标签:

Javascript和JQuery中常用的随机数产生函数(很好用) (2010-09-24 11:14)
微软ASP.NET 爆出新安全漏洞(Microsoft Security Advisory (2416728))攻击者可访问任意文件 (2010-09-19 07:47)
苏州团训网(培训团购)首页设计第一版无Logo版本DEMO (2010-09-17 21:38)
由VS.NET 2008不能被安装在C盘以外的其他盘说起:Dotnet开发人员环境搭建顺序经验 (2010-09-07 22:53)
在C#或ASP.NET中如何判断Click等事件是否已经被注册避免重复注册 (2010-08-02 17:35)
在C#中如何将当前日期转化为周(星期), 日期转周的函数(ASPNET也适用) (2010-07-19 13:01)
解决VS.NET使用属性框时属性框不显示的问题(winform常见问题) (2010-06-28 21:40)
强烈推荐:Javascript最精简右下角弹出广告代码(兼容IE和FF) (2010-06-23 01:51)
多多房第二版(PHP转ASP.NET版本)网站后台管理页面DEMO (2010-06-21 22:12)