Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将图像保存到HTML参考的word_C#_.net_Asp Classic_Ms Word - Fatal编程技术网

C# 将图像保存到HTML参考的word

C# 将图像保存到HTML参考的word,c#,.net,asp-classic,ms-word,C#,.net,Asp Classic,Ms Word,我从我的web应用程序中以HTML格式将数据库中的数据导出到word,这对我来说很好,我将图像插入到记录中, 文档也会显示图像,除了保存该文件并发送给其他人外,其他所有操作对我都很好。。word将找不到该图像的链接 是否仍要在文档上保存该图像,以避免出现路径问题 下面是我的代码:StrTitle包含所有HTML,包括图像链接 string strBody = "<html>" + "<body>" + strTitle +

我从我的web应用程序中以HTML格式将数据库中的数据导出到word,这对我来说很好,我将图像插入到记录中, 文档也会显示图像,除了保存该文件并发送给其他人外,其他所有操作对我都很好。。word将找不到该图像的链接

是否仍要在文档上保存该图像,以避免出现路径问题

下面是我的代码:StrTitle包含所有HTML,包括图像链接

  string strBody = "<html>" +
            "<body>" + strTitle +
            "</body>" +
            "</html>";
        string fileName = "Policies.doc";
        //object missing = System.Reflection.Missing.Value;
        // You can add whatever you want to add as the HTML and it will be generated as Ms Word docs
        Response.AppendHeader("Content-Type", "application/msword");
        Response.AppendHeader("Content-disposition", "attachment; filename=" + fileName);
        Response.Write(strBody);
string strBody=“”+
“+strtle”+
"" +
"";
字符串fileName=“Policies.doc”;
//缺少对象=System.Reflection.missing.Value;
//您可以添加任何您想添加的HTML,它将作为Ms Word文档生成
响应。附录标题(“内容类型”、“应用程序/msword”);
Response.AppendHeader(“内容处置”、“附件;文件名=“+filename”);
响应。写入(strBody);

您可以使用base64编码的图像数据创建html
img
标记。这样,图像数据就包含在它自己的html文档中


您的映像可能只能通过文件系统(即,它们的
src
文件开始)

有几种方法

  • 通过internet使映像可用:确保其
    src
    http
    开头,并且它们托管在下载程序可见的web服务器上(例如,与下载映像的服务器相同)

  • 例如,使用库

  • 您可以按照建议将图像内联

  • 根据经验

  • 是最简单的实现,但有一些麻烦(服务器需要对用户可用)

  • 如果您需要大量操作Word或Office文件,这可能是最好的方法

  • 这是可以做到的,它将解决这个问题,尽管您没有一个完整的库来支持进一步的用例


  • 由于每张图片、表格都是Word/Excel/Powerpoint中的shape类型,您只需在程序中向图片中添加一个可选文本,它实际上会保存下载URL的URL,当您打开时,它将检索并替换该URL

    foreach (NetOffice.WordApi.InlineShape s in docWord.InlineShapes)
    {
        if (s.Type==NetOffice.WordApi.Enums.WdInlineShapeType.wdInlineShapePicture &&  s.AlternativeText.Contains("|"))
        {
              s.AlternativeText=<your website URL to download the picture>;
        }
    }
    
    它将在该位置查找图片

    你可以用我写给你的1个循环来完成你的整个文档。也就是说,如果它是一张图片并且包含一些可选文本,那么在循环中使用AddPicture函数

    编辑:另一个解决方案是设置一个指向图片的超链接,它实际上会进入图片所在的FTP服务器,当你点击图片时,它会打开它,这意味着他可以自己替换它(不好,如果你的文档中有200张图片)

    根据剪贴板编辑:

     string html = Clipboard.GetText(TextDataFormat.Html);
     File.WriteAllText(temporaryFilePath, html);
     NetOffice.WordApi.InlineShape i=appWord.ActiveDocument.InlineShapes.AddPicture(temporaryFilePath, false, true);
    
    Word中的剪贴板能够转换给定的HTML,并在粘贴它时将该表格或图片转换为Word。这也适用于Excel,但不适用于Powerpoint。您可以对图片执行类似操作,并从数据库中拖放。

    如果您确实希望在创建文档或docx类型文件时具有灵活性,请使用word文档创建库。与所有其他流行的文档格式一样,该结构需要足够精确,以供打开文档的程序使用。很明显,如果您的内容不是PDF阅读器所期望的结构,那么您不能通过设置内容类型“application/PDF”来创建PDF文件。内容类型只会使浏览器识别扩展名(在本例中是错误的),并将其作为PDF下载,但实际上它是简单的文本。MS word或任何其他需要正确解析和显示特定文档结构的格式也是如此。

    实际上,此方法失败,因为它只是向我显示HTML文本,但如果我通过记事本打开文件,它会向我显示HTML。有人知道如何使用interop.word完成这项工作吗。。当我只需要替换数据时,我使用了interop.word,我是通过在word模板上添加书签来实现的,但这里我需要在word文档上显示大量数据。。有人能帮我一下吗?实际上这个方法不会失败。我可以毫无问题地可视化由Word中的HTML代码创建的表。我可能忘记提到的是使用剪贴板。查看我编辑的帖子事实上,我在谈论我的帖子,我想通过interop来完成这项工作。word抱歉,请告诉我如何将数据库数据导出到word Template。如果要导出C#中的数据,请在此处查找如何操作。由于您可以检索数据,现在在模板word中,您只需替换每张图片。如果您有一张现有图片,请在这种情况下为其分配一张备选文本。稍后,如果您使用链接检索数据库信息,备选文本具有该链接,并且使用工具,您可以自动替换图片并从数据库URL拍摄图片。此操作无法运行。有什么想法吗?
     string html = Clipboard.GetText(TextDataFormat.Html);
     File.WriteAllText(temporaryFilePath, html);
     NetOffice.WordApi.InlineShape i=appWord.ActiveDocument.InlineShapes.AddPicture(temporaryFilePath, false, true);