2015-01-09 42 views
0

我有一段代码从网格视图提取数据到excel文件。但是,而不是提取网格视图数据被复制整个数据存在于HTML视图到我的excel如下:Gridview到Excel问题

enter image description here

我怎样才能得到只有我网格视图数据导入Excel? 我的excel世代代码如下。我不使用Response.End(),因为它抛出ThreadAbortException。

protected void btnExcelGenerator_Click(object sender, EventArgs e) 
{ 

      Response.Clear(); 
      Response.AddHeader("content-disposition", "attachment;filename=FileName.xls"); 
      Response.Charset = ""; 
      Response.Cache.SetCacheability(HttpCacheability.NoCache); 
      Response.ContentType = "application/vnd.xls"; 

      System.IO.StringWriter stringWrite = new System.IO.StringWriter(); 
      System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite); 

      GridViewRefurb.RenderControl(htmlWrite); 
      Response.Write(stringWrite.ToString()); 
      Response.Flush(); 
      HttpContext.Current.ApplicationInstance.CompleteRequest(); 

} 

帮助表示赞赏,谢谢提前

+1

我不会导出HTML,而是一个真正的Excel文件。使用'EPPlus'非常简单,看一看:http://stackoverflow.com/a/12222648/284240 –

+0

@Tim谢谢,但在你的例子中,它不是从gridview加载,而是从数据表加载。我希望在我的网格视图内显示的数据反映在Excel中。因为我从来没有听说过EPPlus,所以感到困惑。我可以使用帮助 –

+0

但是'GridView'有一个'Dat5aSource'。用于'LoadFromDataTable'或'LoadFromCollection'。 –

回答

0

做一些改变

1)ASPX页面:面板

 <asp:panel id = "panel_export" runat = "server" > 
     <asp:Gridview id = "Gridview" runat = "server"> 
     </Gridview> 
    </asp:Panel> 

2)在Excel导出内的GridView呈现面板代替的GridView

 panel_export.RenderControl(htmlWrite);