2013-06-25 59 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指定的不同格式這是正常的,只是忽略錯誤。 –