Anatoly Lubarsky Logo
programming, design, integration, games, music

Export ASP.NET Control to Microsoft Excel

With server-side code, you can bind the ASP.NET control (for example datagrid or repeater) to your data and have the data open in Excel on a client computer with one button-click. To do this, set the ContentType to application/vnd.ms-excel. Also - it is important to set Content-Disposition response header to be "attachment". After that the control is simply rendered with StringWriter and HtmlTextWriter.


  • webform markup:
    < form id="myForm" method="post" runat="server">
       < input type="button" name="btnExcel" value="excel"
          onclick="navframe.location.href='MyPage.aspx?e=1';">
       < iframe type="hidden" src="" 
          style="display:none;" name="navframe">< /iframe>
       < asp:datagrid id="grdResult" runat="server">< /asp:datagrid>
    < /form>
    
  • codebehind Page_Load event:
    protected System.Web.UI.WebControls.DataGrid grdResult;
    
    private void Page_Load(object sender, System.EventArgs e)
    {
    
        grdResult.DataBind();
    
        if (String.Equals(Request.QueryString["e"], "1"))
        {
            Response.ContentType = "application/vnd.ms-excel";
            Response.AddHeader("Content-Disposition", 
                "attachment; filename=ExcelFile.xls");
    
            Response.BufferOutput = true;
            Response.ContentEncoding = System.Text.Encoding.UTF8;
            Response.Charset = "UTF-8";
            EnableViewState = false;
    
            System.IO.StringWriter tw = new System.IO.StringWriter();
            System.Web.UI.HtmlTextWriter hw = 
                new System.Web.UI.HtmlTextWriter(tw);
    
            grdResult.RenderControl(hw);
    
            Response.Write(tw.ToString());
            Response.End();
        }
    }
    

Please note a small trick how iframe is used in this sample to redirect response and get really flexible and reliable UI.


Related Posts:

Saturday, April 24, 2004 1:39 AM

Comments

# re: HowTo: Export control to Excel.
I get a blank excel file. I wonder if it is because my datagrid is bound to a datareader rather than a datasource. hmm

8/2/2004 10:25 PM by steve

Login

Subscribe via RSS

Article Categories

.Net Framework
ASP.NET Tips
C# Win32 API
HTML, CSS, Web
Javascript Tips
MSSQL Tips
System
System.Net
WebServices

Archives

(02) January, 2018
(01) June, 2013
(03) March, 2013
(02) February, 2013
(01) July, 2012
(01) April, 2012
(01) September, 2011
(01) August, 2011
(03) May, 2011
(01) December, 2010
(01) November, 2010
(01) October, 2010
(01) June, 2010
(01) May, 2010
(02) March, 2010
(01) January, 2010
(02) December, 2009
(03) September, 2009
(03) August, 2009
(09) July, 2009
(04) June, 2009
(03) May, 2009
(02) April, 2009
(03) March, 2009
(02) February, 2009
(02) January, 2009
(04) December, 2008
(04) November, 2008
(05) October, 2008
(04) September, 2008
(05) August, 2008
(04) July, 2008
(05) June, 2008
(07) May, 2008
(04) April, 2008
(03) March, 2008
(02) February, 2008
(03) January, 2008
(03) December, 2007
(05) November, 2007
(04) October, 2007
(05) September, 2007
(12) August, 2007
(11) July, 2007
(14) June, 2007
(13) May, 2007
(13) April, 2007
(10) March, 2007
(11) February, 2007
(14) January, 2007
(14) December, 2006
(12) November, 2006
(08) October, 2006
(09) September, 2006
(06) August, 2006
(08) July, 2006
(10) June, 2006
(09) May, 2006
(22) April, 2006
(25) March, 2006
(12) February, 2006
(14) January, 2006
(19) December, 2005
(17) November, 2005
(16) October, 2005
(16) September, 2005
(12) August, 2005
(14) July, 2005
(09) June, 2005
(12) May, 2005
(12) April, 2005
(20) March, 2005
(11) February, 2005
(12) January, 2005
(18) December, 2004
(13) November, 2004
(12) October, 2004
(14) September, 2004
(09) August, 2004
(23) July, 2004
(19) June, 2004
(29) May, 2004
(19) April, 2004
(16) March, 2004
(09) February, 2004
(06) January, 2004
(02) December, 2003
(01) November, 2003

Post Categories

.Net and C#
Android
Antispam
App. Development
Architecture
ASP.NET
Blogging
Deprecated Projects
Facebook Platform
Fun
Google
iOS
Javascript
Misc.
MSSQL
Music
My Games
Performance
Roller
Social Networks
Tools
Visual Studio
Web 2.0
WebServices

About Me

linkedin Profile
Recs
Who am I

My Sites

Billy Beet
x2line blogs