2011-05-02 79 views
2

我想導出一個gridview表格爲excel格式。
,我發現最簡單,最快速前進的解決方案是從數學Berseth
http://mattberseth.com/blog/2007/04/export_gridview_to_excel_1.htmlGridView與從字節檢索的圖像

這個解決方案正常工作,被客戶所接受。但現在,幾個月後,一個新的功能被要求:「只需在Excel中放置一個圖像標識」

這讓我大吃一驚。我不能把System.Drawing.Image放在System.Web.UI.WebControls.Image中,因爲它們完全不同,但是我不能只放一個Path,因爲生成的Excel會通過電子郵件發送所以不能考慮目錄結構。

那麼,我可以把從GridView中的字節檢索到的圖像導出到數學模型中,還是以其他方式存在?

編輯..

我走了幾步,但我仍然遠離我的目標。 使用字符串的Base64在HTML文件中,我可以嵌入圖像

喜歡的東西:

private string MakeImageSrcData(string filename) { 
    FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read); 
    byte[] filebytes = new byte[fs.Length]; 
    fs.Read(filebytes, 0, Convert.ToInt32(fs.Length)); 
    return "data:image/png;base64," + Convert.ToBase64String(filebytes, Base64FormattingOptions.None); 
} 

...

string base64 = MakeImageSrcData("D:\\Proj\\top_title.png"); 
TableRow tr = new TableRow(); 
TableCell tc = new TableCell(); 
Image logoEmpresa = new Image(); 
logoEmpresa.ImageUrl = base64; 
tc.Controls.Add(logoEmpresa); 
tr.Cells.Add(tc); 
table.Rows.Add(tr); 

這正常工作與IE和FF,但沒有絲毫的Excel:/

我試過電子表格xml,但是正如MSDN描述的那樣here不支持圖像類型。

其他一些想法?

回答

1

該方法通過輸出gridview作爲包含HTML表格的文本來工作。我想你可以在字符串前加上一個字符串,其中包含一個<img>標籤,指向可訪問網站某處的標識。

試試看。

評論

我加在GridViewExportUtil.cs下面前行61文件中引用的演示:

HttpContext.Current.Response.Write("<img src='http://localhost/WebApplication2/wand.gif' />"); 

的形象是可以在指定的URL,並在Excel中正確呈現。

+0

不錯,我在這想。實際上,我可以使用System.Web.UI.WebControls.Image並將控件放入TableRow中。但是因爲我在intranet env工作,所以我無法用可訪問的網站來計數。 – Custodio 2011-05-02 20:27:33

+0

@Luis:'Image'控件最終將呈現爲HTML''標記,並且將受到與任何圖像相同的限制。我不確定是否有方法將圖像編碼爲與頁面嵌入*。我也爲Intranet環境編寫應用程序,並發現將圖像放置在與生成網格視圖的頁面相同的Web應用程序中通常足以讓我的Intranet客戶滿意。如果不是,我建議嘗試公司的公共網站或一些異地託管。 – kbrimington 2011-05-02 20:35:26

+0

我發現了一種將圖像嵌入到html中使用字符串base64的方法。直到使用Internet Explorer和Firefox工作正常,但與Excel無關。我嘗試過電子表格XML,但不支持圖像內容。我一直沒有在Excel中嵌入圖像的解決方案。 – Custodio 2011-05-04 19:58:48