在Asp.net C#中仅将Gridview数据导出为Excel格式

时间:2016-05-09 10:05:33

标签: c# asp.net excel gridview

在我的页面中,我有两个文本框控件,我从Calendar Extender& amp;中选择日期。在导出到Excel的按钮我将导出Gridview数据到Excel工作表。 当我选择excel表时,它会显示文本框和文本框。按钮也可以从中导出excel Sheet。

我在导出按钮中编写了导出代码。 如: -

    protected void Export_to_Excel_Click(object sender, EventArgs e)
    {
        try
        {

            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);
            Grd_MidData.AllowPaging = false;
            bindgriddata();
            //Change the Header Row back to white color
            Grd_MidData.HeaderRow.Style.Add("background-color", "#FFFFFF");
            //Applying stlye to gridview header cells
            for (int i = 0; i < Grd_MidData.HeaderRow.Cells.Count; i++)
            {
                Grd_MidData.HeaderRow.Cells[i].Style.Add("background-color", "#df5015");
            }
            Grd_MidData.RenderControl(htw);
            Response.Write(sw.ToString());
            Response.Flush();
        }
        catch (Exception ee)
        {

        }
    }

当我选择excel表时,它会显示gridview数据以及两个文本框&amp;我正在进行过滤的按钮。

所以任何人都建议我,如何仅显示gridview数据但不显示Textbox&amp; excel表上的按钮。

4 个答案:

答案 0 :(得分:1)

您必须将数据绑定到Excel代码, 使用下面的代码

    bindgriddata();    
    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 ht = new HtmlTextWriter(sw);
    Grd_MidData.RenderControl(ht);
    Response.Write(sw.ToString());
    Response.End();

它对我有用。

答案 1 :(得分:0)

enter image description here

此处显示gridview数据以及From日期:To Date:textbox&amp;按钮也。那么如何从工作表中删除这些字段。

答案 2 :(得分:0)

你可以使用close xml来生成excel,它将提供更多的功能来创建excel和格式化。

protected void Export_to_Excel_Click(object sender, EventArgs e)
{
    bindgriddata();
    Grd_MidData.DataSource = objDS;  // Dataset
    Grd_MidData.DataBind();

    using (XLWorkbook wb = new XLWorkbook())
    {
        try
        {
            //creating worksheet
            var ws = wb.Worksheets.Add("Report");

            //adding columms header
            int columnscount = objDS.Tables[0].Columns.Count;
            char a = 'A';
            for (int j = 1; j <= columnscount; j++)
            {
                string str = a + "1";
                ws.Cell(str).Value = objDS.Tables[0].Columns[j - 1].ColumnName.ToString();
                ws.Cell(str).Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
                a++;
            }
            ws.Columns().AdjustToContents();

            //formatting columns header 
            var rngheaders = ws.Range("A1:J1");
            rngheaders.FirstRow().Style
                .Font.SetBold()
                .Font.SetFontSize(12)
                .Font.SetFontColor(XLColor.Black)
                .Fill.SetBackgroundColor(XLColor.DeepSkyBlue)
                .Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center)
                .Border.OutsideBorder = XLBorderStyleValues.Thin;


            ////adding data to excel
            int k = 2;
            foreach (DataRow row in objDS.Tables[0].Rows)
            {
                char b = 'A';
                string str = b + "" + k;
                for (int i = 0; i < objDS.Tables[0].Columns.Count; i++)
                {
                    ws.Cell(str).Value = row[i].ToString();
                    ws.Cell(str).Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
                    ws.Cell(str).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left);
                    b++;
                    str = b + "" + k;
                }
                k++;
            }

            Response.Clear();
            Response.Buffer = true;
            Response.Charset = "";
            Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
            Response.AddHeader("content-disposition", "attachment;filename=Customer.xlsx");
        }
        catch { }

        using (MemoryStream MyMemoryStream = new MemoryStream())
        {
            wb.SaveAs(MyMemoryStream);
            MyMemoryStream.WriteTo(Response.OutputStream);
            Response.Flush();
            Response.End();
        }
    }

}

答案 3 :(得分:0)

导出GridView时遇到了同样的问题。我添加了一个try / catch并将消息导出到Excel,然后意识到它生成了一个错误。由于以下答案,我解决了这个问题:GridView must be placed inside a form tag with runat="server" even after the GridView is within a form tag