datagrid 中数据怎样导出到ExCel文件中?
我有一段c#代码如下:
Page.Response.Clear();
Response.Buffer= true;
Page.Response.AppendHeader("Content-Disposition","attachment;filename="+filesName+".xls");
Page.Response.ContentType="application/ms-excel" ;
Response.Charset="utf-8";
Page.Response.ContentEncoding=System.Text.Encoding.GetEncoding("utf-8");
this.EnableViewState =false;
System.IO.StringWriter tw = new System.IO.StringWriter() ;
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter (tw);
this.DataGrid1.RenderControl(hw);
Page.Response.Write(tw.ToString());
Page.Response.End();
我运行的结果是:
异常详细信息: System.Web.HttpException: 类型“Button”的控件“DataGrid1__ctl2__ctl0”必须放在具有 runat=server 的窗体标记内。
源错误:
行 148: System.IO.StringWriter tw = new System.IO.StringWriter() ;
行 149: System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter (tw);
行 150: this.DataGrid1.RenderControl(hw); 就是这一行出错了
行 151: Page.Response.Write(tw.ToString());
行 152:
堆栈跟踪:
[HttpException (0x80004005): 类型“Button”的控件“DataGrid1__ctl2__ctl0”必须放在具有 runat=server 的窗体标记内。]
System.Web.UI.Page.VerifyRenderingInServerForm(Control control)
System.Web.UI.WebControls.Button.AddAttributesToRender(HtmlTextWriter writer)
System.Web.UI.WebControls.WebControl.RenderBeginTag(HtmlTextWriter writer) +17
System.Web.UI.WebControls.WebControl.Render(HtmlTextWriter writer) +17
System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +243
System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +72
System.Web.UI.Control.Render(HtmlTextWriter writer) +7
System.Web.UI.WebControls.WebControl.RenderContents(HtmlTextWriter writer)
System.Web.UI.WebControls.TableCell.RenderContents(HtmlTextWriter writer)
System.Web.UI.WebControls.WebControl.Render(HtmlTextWriter writer) +29
System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +243
System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +72
System.Web.UI.Control.Render(HtmlTextWriter writer) +7
System.Web.UI.WebControls.WebControl.RenderContents(HtmlTextWriter writer)
System.Web.UI.WebControls.WebControl.Render(HtmlTextWriter writer) +29
System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +243
System.Web.UI.WebControls.Table.RenderContents(HtmlTextWriter writer)
System.Web.UI.WebControls.WebControl.Render(HtmlTextWriter writer) +29
System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +243
System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +72
System.Web.UI.Control.Render(HtmlTextWriter writer) +7
System.Web.UI.WebControls.WebControl.RenderContents(HtmlTextWriter writer)
System.Web.UI.WebControls.BaseDataList.Render(HtmlTextWriter writer)
System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +243
netapp.TEACH.WebForm1.btnexport_Click(Object sender, EventArgs e) in c:\inetpub\wwwroot\netapp\teach\webform1.aspx.cs:150
System.Web.UI.WebControls.Button.OnClick(EventArgs e)
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain() +1277
不知道错误在哪里??请教还有没有更好的方法,或其它方法也可以(复杂一点没关系)。