2009-07-31 83 views
1

我有包含2個gridview和2個mschart的頁面。我想將此頁面導出爲ex​​cel。爲了這個目的,我把這些控件到面板和編寫代碼:當此代碼運行,一切都只是圖表確定將包含圖像的頁面導出到Excel中

Response.Clear();   
    Response.ContentType = "application/vnd.msexcel"; 
    Response.AddHeader("content-disposition", "attachment; filename=rapor.xls"); 
    Response.ContentEncoding = System.Text.Encoding.Default; 
    System.IO.StringWriter stringWrite = new System.IO.StringWriter(); 
    System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite); 
    panel1.RenderControl(htmlWrite); 
    Response.Write(stringWrite.ToString()); 
    Response.End(); 

。他們不會出色。我該怎麼做?

回答

1

不是100%確定,但我猜圖表被寫入內存以顯示在頁面上,所以它們在請求後消失。

HTML不允許將圖片嵌入代碼中,您必須引用外部文件。

選項:

  1. 檢查圖表允許圖像被寫入到磁盤,但大量的臨時文件,你可能需要存儲這樣的Excel報表繼續顯示圖像
  2. 的提防
  3. (推薦)將報告導出爲PDF。
0

請嘗試下面的代碼。我已在local IIS進行測試,它正在正常工作,並在網格數據之上包含像Header Image/Logo這樣的圖像。您必須將圖表包含爲圖像。

Response.ContentType = "application/vnd.ms-excel";   
Response.AddHeader("Content-Disposition", "attachment; filename=test.xls;");     
StringWriter stringWrite = new StringWriter();   
HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);   
dgrExport.DataSource = dtExport;   
dgrExport.DataBind(); 
dgrExport.RenderControl(htmlWrite); 
string headerTable = @"<Table><tr><td><img src=""D:\\Folder\\1.jpg"" \></td></tr></Table>"; 
Response.Write(headerTable); 
Response.Write(stringWrite.ToString());   
Response.End(); 

您可以根據需要調整圖像的高度和寬度。 <TD>標籤需要相同的高度和寬度設置。