如何使用C#lang将gridview数据转换为asp.net中的excel表

luc*_*One 5 c# asp.net gridview export-to-excel

我想将GridView数据转换为Excel工作表.

我已经编写了下面的代码,但它给出了错误:

protected void Button1_Click(object sender, EventArgs e) 
{       
    Response.Clear();
    Response.AddHeader("content-disposition", "attachment;filename=Avukat.xls");
    Response.Charset = "";

    Response.ContentType = "application/vnd.xls";
    System.IO.StringWriter stringWrite = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
    GridView1.RenderControl(htmlWrite);
    Response.Write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />");
    Response.Write(stringWrite.ToString());
    Response.End();
}
Run Code Online (Sandbox Code Playgroud)

错误:

必须将带有'GridView'类型的控件'ctl00_ContentPlaceHolder1_GridView1'放在带有runat = server的表单标记内.

Muh*_*tar 2

我认为您的 gridview 包含一个linkbutton/Imagebutton or another type of control,这就是为什么当您尝试将 GridView 导出到 Excel 时出现异常。

在使用该控件之前,您需要在 Page 代码后面或 BasePage 代码后面添加以下几行。

public override void VerifyRenderingInServerForm(Control control)
{
}
Run Code Online (Sandbox Code Playgroud)

您可以使用此代码,因为此代码经过测试并且运行良好:

System.IO.StringWriter sw = new System.IO.StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
Response.AddHeader("content-disposition", "attachment; filename=Avukat.xls");
Response.ClearContent();

Response.AddHeader("content-disposition", attachment);

GridView1.RenderControl(htw);
Response.Write(sw.ToString());
Response.Flush();
Response.End();
Run Code Online (Sandbox Code Playgroud)