C# ASP.NET中如何将Dataset导出为Excel

前阵子做的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格式, 很不错, 收藏一下. 正好今天做的多多房项目也用到.

引用通告地址: 点击获取引用地址
标签: .NET WEB
评论: 0 | 引用: 0 | 阅读: 880 | 打印 | 打包 | 转发
发表评论
昵 称: 密 码:
网 址: 邮 箱:
验证码: 验证码图片 选 项:
头 像:
内 容:
  • 粗体
  • 斜体
  • 下划线
  • 插入图像
  • 超链接
  • 电子邮件
  • 插入引用