如何在ASP.NET生成的Word文件中嵌入图像

时间:2008-12-12 10:20:24

标签: asp.net image ms-word

我有一个相当普遍的问题,正如我在各个用户组中看到的那样但找不到合适的答案。

我想要做的是在我的网站上生成一个ASP.NET页面,该页面可以选择导出为Microsoft Word .doc格式。

我使用的方法是:

Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=Test.doc");
Response.Charset = "";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.ContentType = "application/msword";

StringWriter sw = new StringWriter();
HtmlTextWriter htmlWrite = new HtmlTextWriter(sw);
Page.RenderControl(htmlWrite);
Response.Write(sw.ToString());
Response.End();

然而,尽管它生成了一个单词doc,但是这些图像是在文档中嵌入的,而是将它们作为链接放置。我已经找到了一种方法来做到这一点,但还没有找到真正有用的东西。

我很感激我能得到的任何帮助,因为这是“最后一分钟”的要求 (谈论典型的)

由于

1 个答案:

答案 0 :(得分:6)

简答:您需要为网页中的图片来源提供绝对网址。

更长的答案:

如果使用* .doc扩展名重命名,Microsoft Word将打开HTML文档。这就是您提供的代码所做的事情。在这种情况下,图像不会像在您以实际Word格式创建文档时那样嵌入到文档中。如果您的图像使用相对URL,那么Word将不知道在哪里查找它们,因此需要绝对URL。

注意:这意味着在没有互联网连接的情况下查看文档的任何人都不会看到图像,因为每次打开文档时都会从服务器请求图像。

更优雅的解决方案是以真正的Word格式创建文档。一个很棒的图书馆是Aspose.Words。使用此库,您可以将图像直接嵌入到文档中,以便它们不依赖于服务器。