Click here to Skip to main content
15,896,269 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hi All,
I have got stuck with some issue with export option of gridview to excel sheet. Kindly help me is sloving the porblem. Attachments are not coming in the excel exported.
Thank you.
Here is code




C#
public void Export(string fileName, GridView gv) 
        { 
            HttpContext.Current.Response.Clear(); 
            HttpContext.Current.Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", fileName)); 
            HttpContext.Current.Response.ContentType = "application/ms-excel"; 
 
            using (StringWriter sw = new StringWriter()) 
            { 
                using (HtmlTextWriter htw = new HtmlTextWriter(sw)) 
                { 
                    //  Create a form to contain the grid  
                    Table table = new Table(); 
                     
                    table.GridLines = GridLines.Both; 
                     
 
                    //  add the header row to the table  
                    if (gv.HeaderRow != null) 
                    { 
                        PrepareControlForExport(gv.HeaderRow); 
                        table.Rows.Add(getheader()); 
                        table.Rows.Add(gv.HeaderRow); 
                        table.Rows[0].BackColor = System.Drawing.Color.FromArgb(37, 96, 133); 
                    } 
 
                    //  add each of the data rows to the table  
                    foreach (GridViewRow row in gv.Rows) 
                    {                         
                        PrepareControlForExport(row); 
                        table.Rows.Add(row); 
                    } 
 
                    //  add the footer row to the table  
                    if (gv.FooterRow != null) 
                    { 
                        PrepareControlForExport(gv.FooterRow); 
                        table.Rows.Add(gv.FooterRow); 
                    } 
 
                    //  render the table into the htmlwriter  
                    table.RenderControl(htw); 
 
                    //  render the htmlwriter into the response  
                    HttpContext.Current.Response.Write(sw.ToString()); 
                    HttpContext.Current.Response.End(); 
                } 
            } 
        } 
 
 
/// <summary>  
        /// Replace any of the contained controls with literals  
        /// </summary>  
        /// <param name="control"></param>  
        private static void PrepareControlForExport(Control control) 
        { 
            for (int i = 0; i < control.Controls.Count; i++) 
            { 
                Control current = control.Controls[i]; 
                if (current is LinkButton) 
                { 
                    control.Controls.Remove(current); 
                    control.Controls.AddAt(i, new LiteralControl((current as LinkButton).Text)); 
                } 
                else if (current is ImageButton) 
                { 
                    control.Controls.Remove(current); 
                    control.Controls.AddAt(i, new LiteralControl((current as ImageButton).AlternateText)); 
                } 
                else if (current is HyperLink) 
                { 
                    control.Controls.Remove(current); 
                    control.Controls.AddAt(i, new LiteralControl((current as HyperLink).Text)); 
                } 
                else if (current is DropDownList) 
                { 
                    control.Controls.Remove(current); 
                    control.Controls.AddAt(i, new LiteralControl((current as DropDownList).SelectedItem.Text)); 
                } 
                else if (current is CheckBox) 
                { 
                    control.Controls.Remove(current); 
                    control.Controls.AddAt(i, new LiteralControl((current as CheckBox).Checked ? "True" : "False")); 
                } 
 
                if (current.HasControls()) 
                { 
                    PrepareControlForExport(current); 
                } 
            } 
        } 
Posted
Updated 8-Feb-12 13:46pm
v2
Comments
zyck 8-Feb-12 1:06am    
can you provide sample output design of your grid
ZurdoDev 8-Feb-12 22:14pm    
What IS happening? It helps to know what is happening more often than what is not happening.

1 solution

This code will work only in page load itself...
Create a new form and put your code on page_load itself then your excel export functionality will work...


If you want to get the form on button click then write this code on that Buuton click action

Response.Redirect("~Example.Aspx")
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900