我想导出一个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不支持图像类型。
其他一些想法?
不错,我在这想。实际上,我可以使用System.Web.UI.WebControls.Image并将控件放入TableRow中。但是因为我在intranet env工作,所以我无法用可访问的网站来计数。 – Custodio 2011-05-02 20:27:33
@Luis:'Image'控件最终将呈现为HTML''标记,并且将受到与任何图像相同的限制。我不确定是否有方法将图像编码为与页面嵌入*。我也为Intranet环境编写应用程序,并发现将图像放置在与生成网格视图的页面相同的Web应用程序中通常足以让我的Intranet客户满意。如果不是,我建议尝试公司的公共网站或一些异地托管。 – kbrimington 2011-05-02 20:35:26
我发现了一种将图像嵌入到html中使用字符串base64的方法。直到使用Internet Explorer和Firefox工作正常,但与Excel无关。我尝试过电子表格XML,但不支持图像内容。我一直没有在Excel中嵌入图像的解决方案。 – Custodio 2011-05-04 19:58:48