我想将一个gridview表导出为excel格式 我找到的最简单快速的解决方案来自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,因此不支持图像类型。
其他一些想法?
答案 0 :(得分:1)
此方法的工作原理是将gridview输出为包含HTML表格的文本。我想你可以在字符串前面添加一个字符串,其中包含一个<img>
标签,指向可访问网站上某处的徽标。
试一试。
<强>注释强>
我在引用的演示中的GridViewExportUtil.cs文件的第61行之前添加了以下内容:
HttpContext.Current.Response.Write("<img src='http://localhost/WebApplication2/wand.gif' />");
图像在指定的URL处可用,并在Excel中正确呈现。