GridView包含从字节中检索的图像

时间:2011-05-02 20:18:00

标签: c# image excel gridview

我想将一个gridview表导出为ex​​cel格式 我找到的最简单快速的解决方案来自Math Berseth http://mattberseth.com/blog/2007/04/export_gridview_to_excel_1.html

此解决方案工作正常,并被客户接受。但现在,几个月后,我们要求推出一项新功能:“只需在Excel中添加一个图像徽标”

这让我很沮丧。我不能把System.Drawing.Image放在System.Web.UI.WebControls.Image中导致它们完全不同,但是我不能只放一个Path因为生成的excel会在电子邮件中发送所以不能考虑目录结构。

那么,我可以将从Gridview中的字节检索的图像放到数学模型中导出,还是以其他方式存在?

编辑..

我走了几步,但我离目标还很远。 我可以使用String 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,但没有任何好处:/

我尝试使用电子表格xml,但由于MSDN描述here,因此不支持图像类型。

其他一些想法?

1 个答案:

答案 0 :(得分:1)

此方法的工作原理是将gridview输出为包含HTML表格的文本。我想你可以在字符串前面添加一个字符串,其中包含一个<img>标签,指向可访问网站上某处的徽标。

试一试。

<强>注释

我在引用的演示中的GridViewExportUtil.cs文件的第61行之前添加了以下内容:

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

图像在指定的URL处可用,并在Excel中正确呈现。