2013-06-25 33 views
0

我希望有人能让我走上正确的轨道。我需要下载我的Gridview到Excel:Gridview到Excel不会在Excel中产生任何结果

Gridview出现在我的.ascx页面上没有问题...我按下按钮,下面的代码被执行,我得到提示保存或打开,但然后我得到“file.xls”格式不正确或损坏,我按OPEN ...并且没有出现在我的Excel中。我记得之前做到这一点,我有麻烦......我缺少什么:

protected void dwnLoad(object sender, EventArgs e) 
     { 
      Response.Clear(); 
      Response.AddHeader("content-disposition", "attachment; filename=kbNotification.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 htmlWriter = new HtmlTextWriter(stringWrite); 
      GridView1.RenderControl(htmlWriter); 
      Response.End(); 
     } 
+0

除了一些格式化问题,我已经解决了,看看我的问题http://stackoverflow.com/questions/17251162/gridview-export-to-excel-formatting-problems,有一种方法工作正常导出datagrid excel。 – FeliceM

回答

0

由于我的GridView是在页面的.ascx ... Default.aspx页面必须包含两个部分组成:后面的代码:

public override void VerifyRenderingInServerForm(Control control) 
     { 
      return; 
     } 

,并在顶部<%@页的Default.aspx - EnableEventValidation =“假”

这是必要的处理GridView控件中,要成为标签之间需要。

此外,由于某些愚蠢的原因,我在我的.ascx页面上有标签...需要取出。

那么是什么使这项工作总算是使用下面的代码,用于OnClick事件:

protected void dwnLoad(object sender, EventArgs e) 
     { 
      Response.Clear(); 
      Response.AddHeader("content-disposition", "attachment; filename=kbNotification.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 htmlWriter = new HtmlTextWriter(stringWrite); 
      GridView1.RenderControl(htmlWriter); 
      Response.Write(stringWrite.ToString()); 
      Response.End(); 
     } 

我缺少的Response.Write ...哎呀!

现在我的Excel正在显示我的屏幕内容。 我希望这可以帮助可能遇到相同问题的其他人。

+0

有一点要记住的是,输出不是一个真正的Excel电子表格。它基本上是一个可格式化的HTML/Text文件,在导出后需要保存为Excel电子表格。 –

+0

好吧,它的工作除了我不断收到消息“你试图打开的文件是由文件扩展名 –

+0

@paultrykiel指定的不同格式这是正常的,只是忽略错误。 –