简体   繁体   中英

data export grid view to excel

I am exporting data grid view to an excel sheet, and it works.

There are 10 columns in grid view, but I want to show only 5 columns in the excel sheet.

How can I solve this?

  protected void btnexcel_Click1(object sender, EventArgs e)
    {

    Response.Clear();
    Response.Buffer = true;

    Response.AddHeader("content-disposition",
    "attachment;filename=ActualsAndBudgets.xls");
    Response.Charset = "";
    Response.ContentType = "application/ms-excel";
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    StringWriter sw = new StringWriter();
    HtmlTextWriter htw = new HtmlTextWriter(sw);
    gvdetails.AllowPaging = false;
    fillgrid();
    gvdetails.RenderControl(htw);
    Response.Write(sw.ToString());
    Response.End();
    gvdetails.AllowPaging = true;
    fillgrid();

    }
   public override void VerifyRenderingInServerForm(Control control)
   {

   }

Use this code may help. and must add iTextSharp dll in your project.

protected void btnExportExcel_Click(object sender, EventArgs e)
    {
        Response.Clear();
        Response.Buffer = true;
        Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.xls");
        Response.Charset = "";
        Response.ContentType = "application/vnd.ms-excel";

        StringWriter sw = new StringWriter();
        HtmlTextWriter hw = new HtmlTextWriter(sw);
        GridView1.AllowPaging = false;

        // Re-Bind data to GridView 

        using (CompMSEntities1 CompObj = new CompMSEntities1())
        {
            Start = Convert.ToDateTime(txtStart.Text);
            End = Convert.ToDateTime(txtEnd.Text);

            GridViewSummaryReportCategory.DataSource = CompObj.SP_Category_Summary(Start, End);
            SP_Category_Summary_Result obj1 = new SP_Category_Summary_Result();
            GridView1.DataBind();
           GridView1.Visible = true;
            ExportTable.Visible = true;
        }

        //Change the Header Row back to white color

        GridView1.HeaderRow.Style.Add("background-color", "#FFFFFF");


       GridView1.Style.Add(" font-size", "10px");




        //Apply style to Individual Cells

        GridView1.HeaderRow.Cells[0].Style.Add("background-color", "green");
        GGridView1.HeaderRow.Cells[1].Style.Add("background-color", "green");
        GridView1.HeaderRow.Cells[2].Style.Add("background-color", "green");
        GridView1.HeaderRow.Cells[3].Style.Add("background-color", "green");
        GridView1.HeaderRow.Cells[4].Style.Add("background-color", "green");

        for (int i = 1; i < GridView1.Rows.Count; i++)
        {
            GridViewRow row = GridView1.Rows[i];

            //Change Color back to white

            row.BackColor = System.Drawing.Color.White;

            //Apply text style to each Row

        //    row.Attributes.Add("class", "textmode");

            //Apply style to Individual Cells of Alternating Row

            if (i % 2 != 0)
            {
                row.Cells[0].Style.Add("background-color", "#C2D69B");
                row.Cells[1].Style.Add("background-color", "#C2D69B");
                row.Cells[2].Style.Add("background-color", "#C2D69B");
                row.Cells[3].Style.Add("background-color", "#C2D69B");
                row.Cells[4].Style.Add("background-color", "#C2D69B");
            }
        }
        GridView1.RenderControl(hw);

        //style to format numbers to string

        string style = @"<style> .textmode { mso-number-format:\@; } </style>";

        Response.Write(style);
        Response.Output.Write(sw.ToString());
        Response.Flush();
        Response.End();
    }

You can try the code below:

protected void ConvertToExcel_Click(object sender, System.EventArgs e)
{
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("content-disposition",     "attachment;filename=ContactMailingAddress.xls");
Response.Charset = "";
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
ContactMailingView.AllowPaging = false;
ContactMailingView.DataBind();


    //Apply style to Individual Cells

    ContactMailingView.HeaderRow.Cells(0).Style.Add("background-color", "yellow");
ContactMailingView.HeaderRow.Cells(1).Style.Add("background-color", "yellow");
ContactMailingView.HeaderRow.Cells(2).Style.Add("background-color", "yellow");
ContactMailingView.HeaderRow.Cells(3).Style.Add("background-color", "yellow");
ContactMailingView.HeaderRow.Cells(4).Style.Add("background-color", "yellow");


for (int i = 0; i <= ContactMailingView.Rows.Count - 1; i++) {
    GridViewRow row = ContactMailingView.Rows(i);

            //Change Color back to white
    row.BackColor = System.Drawing.Color.White;

            //Apply text style to each Row
    row.Attributes.Add("class", "textmode");

            //Apply style to Individual Cells of Alternating Row
    if (i % 2 != 0) {
        row.Cells(0).Style.Add("background-color", "#C2D69B");
        row.Cells(1).Style.Add("background-color", "#C2D69B");
        row.Cells(2).Style.Add("background-color", "#C2D69B");
        row.Cells(3).Style.Add("background-color", "#C2D69B");
        row.Cells(4).Style.Add("background-color", "#C2D69B");

    }
}

     ContactMailingView.RenderControl(hw);

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

}

I took it from my post in dotNetFromManila blog

Hope it helps you.

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