【发布时间】:2011-06-29 02:30:33
【问题描述】:
我必须将一些数据从 asp.net 页面导出到 Excel,所以我基本上使用一个表格来创建我需要的自定义标题,然后是一个 GridView。导出到 excel 时所有数据都正确显示,但是当我将徽标图像添加到 html 时,导出时它不会显示在 Excel 文件中。
由于我需要将它导出到 Excel 2007 或更高版本,我知道我可以使用 Microsoft 的 Open XML 东西来导出数据,问题是我已经完成了所有代码,我想知道是否有是另一种方法来做到这一点,而不是使用 Open XML 重新做一遍。
如果不使用 Open XML 就无法做到这一点,谁能告诉我如何将数据导出到它?我尝试过一次,但没有太大的成功。 =/
顺便说一句,我正在使用 C#。
提前致谢!
我已经更新了代码,现在看起来像这样,但我还是看不到图像... =/
System.IO.StringWriter stringWrite = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
frmPlanoAcao.RenderControl(htmlWrite);
StringWriter w = new StringWriter();
HtmlTextWriter t = new HtmlTextWriter(w);
imgLogo.RenderControl(t);
var byte_array = System.Text.Encoding.ASCII.GetBytes(w.ToString());
Response.Write(stringWrite.ToString());
this.EnableViewState = false;
Response.Clear();
Response.Buffer = false;
Response.Charset = "ISO-8859-1";
Response.ContentEncoding = System.Text.Encoding.GetEncoding(1252);
Response.AddHeader("content-disposition", String.Format("attachment; filename={0}", "plano_acao.xls"));
Response.ContentType = "application/vnd.ms-excel";
Response.Write("<meta http-equiv=Content-Type content=\"text/html; charset=utf-8\">");
Response.Write(getExcelStyling());
Response.OutputStream.Write(byte_array, 0, byte_array.Length);
Response.Write(stringWrite.ToString());
Response.Write("</body>");
Response.Write("</html>");
Response.End();
【问题讨论】:
-
你现在怎么样了?我认为新的 XML 格式不会对您有任何帮助。
-
你应该使用one of these libraries。不过,我不知道哪些支持插入图像:希望有人可以在此处的答案中向您推荐一个。
-
嘿 Rup,谢谢你的例子,但我不认为在那里,他们将图像插入到文件中。我已经能够做他们在那里做的事情,但在另一方面,我唯一的问题实际上只是一个应该放在文件左上角的徽标图像。
-
我认为您的问题是您试图欺骗 Excel 将 HTML 作为电子表格加载,但事实并非如此。我建议您使用 Excel 库来生成真正的电子表格,而不是 HTML。如果您想在 HTML 中嵌入图像,那么您可以使用一些技巧,例如data URLs 但我认为实际生成电子表格会更干净。
-
是的,这就是我害怕的...必须专门制作代码以使其表现出色。我将尝试使用开放 XML,问题是我不知道该怎么做,而且我不得不在不久前提供这个...但是感谢您的帮助...但是如果我找到了解决方案,我会在这里发布!
标签: c# html image export-to-excel