简体   繁体   中英

how to export a grid view in to excel?

hi i am developing an application where i am using a grid to dispaly data and adding a dynamic datatable as the header of the gridview and iam using the following code to export the grid view into excel but i am unable get the datatable which was added dynamically to the grid into the excel. the code i am using is:

    Response.AddHeader("content-disposition", "attachment;filename=Report.xls");
    Response.Charset = String.Empty;
    Response.ContentType = "application/vnd.xls";
    System.IO.StringWriter sw = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter hw = new HtmlTextWriter(sw);
    GridView1.DataBind();
    GridView1.RenderControl(hw);
    Response.Write(sw.ToString());
    Response.End();

is thee any other method to follow.

Thanks in advance!

I don't see where you are adding the dynamic datatable as the header?? This should come after the databind and before the GridView1.RenderControl(hw);

this will export gridview in formatted output file

Response.Clear();
        Response.Buffer = true;
        Response.AddHeader("content-disposition", "attachment; filename=gridSample.xls");
        Response.Charset = "";
        Response.ContentType = "application/vnd.ms-excel";

        using (StringWriter sw = new StringWriter())
        {
            HtmlTextWriter hw = new HtmlTextWriter(sw);

            //to export all pages
            gridSample.AllowPaging = false;
            gridSample.DataSource = progress.getSample();
            gridSample.DataBind();
            //bind again

            gridSample.HeaderRow.BackColor = Color.White;

            foreach (TableCell cell in gridSample.HeaderRow.Cells)
            {
                cell.BackColor = gridSample.HeaderStyle.BackColor;
            }
            foreach (GridViewRow row in gridSample.Rows)
            {
                row.BackColor = Color.White;
                foreach (TableCell cell in row.Cells)
                {
                    if (row.RowIndex % 2 == 0)
                    {
                        cell.BackColor = gridSample.AlternatingRowStyle.BackColor;
                    }
                    else
                    {
                        cell.BackColor = gridSample.RowStyle.BackColor;
                    }
                    cell.CssClass = "textmode";
                }
            }

            gridSample.RenderControl(hw);

            //style to format numbers to string
            string style = @"<style> .textmode { } </style>";
            Response.Write(style);
            Response.Output.Write(sw.ToString());
            Response.Flush();
            Response.End();
        }

try this one in the button click event

              protected void btnExcel_Click(object sender, ImageClickEventArgs e)
           {
              Response.ClearContent();
              Response.Buffer = true;
              Response.AddHeader("content-disposition", string.Format("attachment; filename=      {0}", "Customers.xls"));
              Response.ContentType = "application/ms-excel";
             StringWriter sw = new StringWriter();
             HtmlTextWriter htw = new HtmlTextWriter(sw);
             gvdetails.AllowPaging = false;
             gvdetails.DataBind();
            //Change the Header Row back to white color
            gvdetails.HeaderRow.Style.Add("background-color", "#FFFFFF");
            //Applying stlye to gridview header cells
            for (int i = 0; i < gvdetails.HeaderRow.Cells.Count; i++)
          {
          gvdetails.HeaderRow.Cells[i].Style.Add("background-color", "#507CD1");
          }
           int j = 1;
           //This loop is used to apply stlye to cells based on particular row
           foreach (GridViewRow gvrow in gvdetails.Rows)
           {
             gvrow.BackColor = Color.White;
             if (j <= gvdetails.Rows.Count)
           {
            if (j % 2 != 0)
      {
        for (int k = 0; k < gvrow.Cells.Count; k++)
          {
        gvrow.Cells[k].Style.Add("background-color", "#EFF3FB");
          }
        }
       }
          j++;
        }
          gvdetails.RenderControl(htw);
            Response.Write(sw.ToString());
           Response.End();
          }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM