Export records from gridview to microsoft excel problem

Hi Experts,

I was tried export data in gridview to excel. I encounter error called 'Exception of type 'System.OutOfMemoryException' was thrown.'
Kindly guide me on how to solve this issue.
Pls refer attached code.
Thks.
protected void Button1_Click(object sender, EventArgs e) 
    { 
        this.GridView1.AllowPaging = false; 
        this.GridView1.DataBind(); 
 
        GridViewExportUtil.Export("M2ReportInternal.xls", this.GridView1); 
    } 
 
public class GridViewExportUtil 
{ 
     
    public static 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 table to contain the grid 
                Table table = new Table(); 
 
                //  include the gridline settings 
                table.GridLines = gv.GridLines; 
 
                //  add the header row to the table 
                if (gv.HeaderRow != null) 
                { 
                    GridViewExportUtil.PrepareControlForExport(gv.HeaderRow); 
                    table.Rows.Add(gv.HeaderRow); 
                } 
 
                //  add each of the data rows to the table 
                foreach (GridViewRow row in gv.Rows) 
                { 
                    GridViewExportUtil.PrepareControlForExport(row); 
                    table.Rows.Add(row); 
                } 
 
                //  add the footer row to the table 
                if (gv.FooterRow != null) 
                { 
                    GridViewExportUtil.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()) 
            { 
                GridViewExportUtil.PrepareControlForExport(current); 
            } 
        } 
    } 
}

Open in new window

silterraAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

muhammadyasirCommented:
try displaying few records in gridview and then export it.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
.NET Programming

From novice to tech pro — start learning today.