Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用C#lang在asp.net中将gridview数据转换为excel工作表_C#_Asp.net_Gridview_Export To Excel - Fatal编程技术网

如何用C#lang在asp.net中将gridview数据转换为excel工作表

如何用C#lang在asp.net中将gridview数据转换为excel工作表,c#,asp.net,gridview,export-to-excel,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 = ""; Re

我想将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();
}
受保护的无效按钮1\u单击(对象发送者,事件参数e)
{       
Response.Clear();
AddHeader(“内容处置”、“附件;文件名=Avukat.xls”);
响应。Charset=“”;
Response.ContentType=“application/vnd.xls”;
System.IO.StringWriter stringWrite=新的System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite=新的HtmlTextWriter(stringWrite);
GridView1.RenderControl(htmlWrite);
回答。写(“”);
Response.Write(stringWrite.ToString());
Response.End();
}
错误:

“GridView”类型的控件“ctl00\u ContentPlaceholder 1\u GridView1”必须放置在runat=server的表单标记中


我认为您的gridview包含一个
linkbutton/Imagebutton或其他类型的控件
,这就是为什么您试图将gridview导出到Excel时会出现异常

在使用该控件之前,您需要在页面代码隐藏或基本页面代码隐藏中添加以下行

public override void VerifyRenderingInServerForm(Control control)
{
}
您可以使用这段代码,因为这段代码经过了测试,工作得非常好:

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();

你只需要复制下面的代码

public override void VerifyRenderingInServerForm(Control control)
    {

        // Confirms that an HtmlForm control is rendered for the
        specified ASP.NET server control at run time.

    }

您错过了这一部分:

HtmlForm _HtmlForm= new HtmlForm();
GridView1.Parent.Controls.Add(_HtmlForm);
_HtmlForm.Attributes["runat"] = "server";
_HtmlForm.Controls.Add(GridView1);
_HtmlForm.RenderControl(htmlWrite);
我的意思是你应该使用这行代码:

_HtmlForm.RenderControl(htmlWrite);
而不是:

GridView1.RenderControl(htmlWrite); 

但我认为最好使用这个从不同excel和word格式导入/导出的免费开源组件:

它在这行响应中显示错误。AddHeader(“内容处置”,附件);必须将类型为“GridView”的控件“ctl00\u ContentPlaceholder 1\u GridView1”放置在带有runat=server的表单标记中“我发现了这个错误。@lucky jain;我已经更新了答案,你们现在可以试试,我相信现在你们的问题会得到解决。我不明白这个函数里面写了什么me@lucky杰恩:不要写任何代码,只要把这些代码放在你的.cs页面上就行了。希望它能对您有所帮助。谢谢,我收到了。我必须在页眉中写一条语句“EnableEventValidation=“false”您好,欢迎使用Stackoverflow。但是,请考虑正确地格式化代码。您可以在编辑器中使用“代码”样式。
_HtmlForm.RenderControl(htmlWrite);
GridView1.RenderControl(htmlWrite);