1

我尝试了将整个gridview数据保存到excel文件的代码,它工作正常,但现在我只想将gridview的特定列保存到excel文件中。我已经使用了mysql数据库和asp.net与C#。请任何人帮助我有了这个。

**default.aspx**
 <asp:GridView ID="GridView1" runat="server">
    </asp:GridView>

    <asp:Button ID="btnSave" runat="server" Text="Save to Excel" OnClick="btnSave_Click" />

**default.cs**
 protected void btnSave_Click(object sender, EventArgs e)
    {
        ExportGridToExcel(GridView1, "StudentMarks.xls");
    }

    public void ExportGridToExcel(GridView grdGridView, string fileName)
    {
        Response.Clear();
        Response.AddHeader("content-disposition", string.Format("attachment;filename={0}.xls", fileName));
        Response.Charset = "";
        Response.ContentType = "application/vnd.xls";
        StringWriter stringWrite = new StringWriter();
        HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
        grdGridView.RenderControl(htmlWrite);
        Response.Write(stringWrite.ToString());
        Response.End();
    }

    public override void VerifyRenderingInServerForm(Control control)
    {
        return;
    }

这是我的网格视图

这是生成的excel文件

4

2 回答 2

0

要生成excel,请使用此方法..

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);
            GridView.AllowPaging = false;

            // Re-Bind data to GridView 

            using (MSEntities1 CompObj = new MSEntities1())
            {
               // code for bind grid view 
                GridView.DataBind();
            }

            // Change the Header Row back to white color

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

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


            //Apply style to Individual Cells

            GridView.HeaderRow.Cells[0].Style.Add("background-color", "green");
            GridView.HeaderRow.Cells[1].Style.Add("background-color", "green");
            GridView.HeaderRow.Cells[2].Style.Add("background-color", "green");
            GridView.HeaderRow.Cells[3].Style.Add("background-color", "green");
            GridView.HeaderRow.Cells[4].Style.Add("background-color", "green");
            GridView.HeaderRow.Cells[5].Style.Add("background-color", "green");
            GridView.HeaderRow.Cells[6].Style.Add("background-color", "green");
            GridView.HeaderRow.Cells[7].Style.Add("background-color", "green");


            int k = GridView.Rows.Count;

            for (int i = 1; i < GridView.Rows.Count; i++)
            {

                GridViewRow row = GridView.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");
                    row.Cells[5].Style.Add("background-color", "#C2D69B");
                    row.Cells[6].Style.Add("background-color", "#C2D69B");
                    row.Cells[7].Style.Add("background-color", "#C2D69B");
                }
            }
            GridView.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();
        }
于 2013-04-15T11:18:29.080 回答
0

您可以使用 asp:boundfield 选择要在 gridview 中显示的列。然后将该gridview导出到excel。

好的。在您的情况下,您可以绑定一个具有相同数据但没有编辑/删除列的新网格视图。您可以将此新网格视图的可见性设置为 false。

于 2013-04-15T11:12:19.793 回答