波斯马BOSSMA Information Technology

asp.net将控件或页面数据导出到Excel

发布时间:2010年11月4日 / 分类:ASP.NET / 12,259 次浏览 / 评论

利用Response.ContentType属性,设置为application/vnd.ms-excel,将文本数据以microsoft excel的格式输出(Response)到客户端。

如,导出DataGrid:

//要导出的DataGrid控件
protected void Button2_Click(object sender, EventArgs e)
    {
        //要导出的控件
        System.Web.UI.Control ctl = this.Label1;

        //输出属性
        HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=Excel.xls");
        HttpContext.Current.Response.Charset = "UTF-8";
        HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.Default;
        HttpContext.Current.Response.ContentType = "application/ms-excel";

        //输出空间内容到HtmlTextWriter
        ctl.Page.EnableViewState = false;
        System.IO.StringWriter tw = new System.IO.StringWriter();
        System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
        ctl.RenderControl(hw);

        //输出HtmlTextWriter
        HttpContext.Current.Response.Write(tw.ToString());
        HttpContext.Current.Response.End();
    }

使用这种方法,可以将大部分控件的数据都导入到Excel文件中。如Literal、GridView、Repeater、Label,只要这些控件中的数据是格式良好的表格,导出的Excel格式也是以表格数据形式展现。

将上边的代码直接写入到Page_Load中,可以将整个页面下载为Excel文件.

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Response.Clear();
            Response.Buffer = true;
            Response.AppendHeader("Content-Disposition", "attachment;filename=" + DateTime.Now.ToString("yyyyMMdd") + ".xls");
            Response.ContentEncoding = System.Text.Encoding.UTF8;
            Response.ContentType = "application/vnd.ms-excel";
            this.EnableViewState = false;
        }
    }

本文参考:http://blog.csdn.net/jilm168/archive/2007/11/06/1869118.aspx

本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自波斯马,原文地址《asp.net将控件或页面数据导出到Excel

关键字:

建议订阅本站,及时阅读最新文章!
【上一篇】 【下一篇】

目前有1 条评论

  1. 微微 0楼:

    这挺先进的呀

发表评论