0

我正在尝试将我的 GridView 导出为 2010 Excel 文件.xlsx格式。它适用于.xls我想知道是否有人可以帮助我。这是我到目前为止所拥有的:

protected void Button2_Click(object sender, EventArgs e)
    {
        Response.Clear();
        Response.Buffer = true;
        Response.AddHeader("content-disposition",
        "attachment;filename=GridViewExport.xls");
        Response.Charset = "";
        Response.ContentType = "application/vnd.xls";
        StringWriter sw = new StringWriter();
        HtmlTextWriter hw = new HtmlTextWriter(sw);
        GridView1.AllowPaging = false;
        GridView1.DataBind();

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

        GridView1.HeaderRow.Cells[0].Style.Add("background-color", "#D1EEEE");

        GridView1.HeaderRow.Cells[1].Style.Add("background-color", "#D1EEEE");

        GridView1.HeaderRow.Cells[2].Style.Add("background-color", "#D1EEEE");

        GridView1.HeaderRow.Cells[3].Style.Add("background-color", "#D1EEEE");
        GridView1.HeaderRow.Cells[4].Style.Add("background-color", "#D1EEEE");
        GridView1.HeaderRow.Cells[5].Style.Add("background-color", "#D1EEEE");
        GridView1.HeaderRow.Cells[6].Style.Add("background-color", "#D1EEEE");
        GridView1.HeaderRow.Cells[7].Style.Add("background-color", "#D1EEEE");
        GridView1.HeaderRow.Cells[8].Style.Add("background-color", "#D1EEEE");
        for (int i = 0; i < GridView1.Rows.Count; i++)
        {

            GridViewRow row = GridView1.Rows[i];
            row.BackColor = System.Drawing.Color.White;
            row.Attributes.Add("class", "textmode");
            if (i % 2 != 0)
            {

                row.Cells[0].Style.Add("background-color", "#FFFFFF");
                row.Cells[1].Style.Add("background-color", "#FFFFFF");
                row.Cells[2].Style.Add("background-color", "#FFFFFF");
                row.Cells[3].Style.Add("background-color", "#FFFFFF");

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

    }
4

2 回答 2

1

看下面的文章,它使用九种方法将数据导出到asp.net上的excel,它必须有帮助:

9 种将数据导出到 Excel for ASP.NET 的解决方案

于 2012-11-07T06:44:45.427 回答
0

请执行以下操作:

                protected void ExportExcel(object sender, EventArgs e)
                {
                    DataTable dt = new DataTable("GridView_Data");
                    foreach(TableCell cell in GridView1.HeaderRow.Cells)
                    {
                        dt.Columns.Add(cell.Text);
                    }
                    foreach (GridViewRow row in GridView1.Rows)
                    {
                        dt.Rows.Add();
                        for (int i=0; i<row.Cells.Count; i++)
                        {
                            dt.Rows[dt.Rows.Count - 1][i] = row.Cells[i].Text;
                        }
                   }
                    using (XLWorkbook wb = new XLWorkbook())
                    {
                        wb.Worksheets.Add(dt);

                        Response.Clear();
                        Response.Buffer = true;
                        Response.Charset = "";
                        Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
                        Response.AddHeader("content-disposition", "attachment;filename=GridView.xlsx");
                        using (MemoryStream MyMemoryStream = new MemoryStream())
                        {
                            wb.SaveAs(MyMemoryStream);
                            MyMemoryStream.WriteTo(Response.OutputStream);
                            Response.Flush();
                            Response.End();
                        }
                    }
                }

这些链接逐步显示了如何做到这一点:

http://www.aspsnippets.com/Articles/Solution-ASPNet-GridView-Export-to-Excel-The-file-you-are-trying-to-open-is-in-a-different-format-than-指定的文件扩展名.aspx

于 2016-02-25T12:58:35.903 回答