使用c#编写HTML内容到word文档

本文关键字:word 文档 编写 HTML 使用 | 更新日期: 2023-09-27 18:18:13

我正在动态生成一个word文档,需要使用使用CKeditor控件生成的html内容替换我的特殊标签。这里我使用的word文档是一个包含预先输入文本的模板,我使用Microsoft.Office.Interop.Word来生成文档。现在我可以使用互操作的doc.range.Find方法找到我的特殊标签。但是当我想用HTML内容代替这个标签而不失去它的风格。我该怎么做呢?
使用doc.range. find .replace .text是不实际的,因为它只会用html文本替换整个标签。

的例子:在我的word文档中,我有一个特殊的标签,如下所示

 ##<Special Conditions Frag>## 

在文档生成期间,我需要接受用户通过ckeditor控件输入的一些文本(它将以HTML格式与body标签和所有)。而这个html内容我需要用上面的特殊条件在word文档中替换。

我的HTML内容如下

<html>
 <head>
  <title></title></head>
   <body>
    <p>
 <strong>Sample text</strong>
    </p>
   </body>
</html>

使用c#编写HTML内容到word文档

从XML到OOXML,再到互操作,确实有很多可能的变体。

一种方法是使用剪贴板。

string html = Clipboard.GetText(TextDataFormat.Html);

在这里你可以操作你的html字符串,同时发送到剪贴板任何你想要的html代码。

//save the html content to a file
File.WriteAllText(temporaryFilePath, html);

你可以把它保存在一个文件中并打开这个文件,你会在浏览器中看到html代码的真正转换。

如果你现在想在Word中实现它,你可以用:

插入文件内容
s.Range.InsertFile(temporaryFilePath);

如果你想遍历所有的文档,你可以使用一个循环来检查特定的位置替换

foreach (NetOffice.WordApi.InlineShape s in docWord.InlineShapes)
{
    if (s.Type==NetOffice.WordApi.Enums.WdInlineShapeType.wdInlineShapePicture &&   s.AlternativeText.Contains("|"))
    {
        //save the html content to a file
        File.WriteAllText(temporaryFilePath, html);  
        s.Range.InsertFile(temporaryFilePath);             
    }
}

这是一种将HTML集成到Word中的方法。另一种方法,很难看的方法,是将html代码转换成图片,然后插入图片,我不推荐这种方法。如果你打算将其扩展到Excel中,它的工作原理是一样的,如果你试图将html实现到Powerpoint中,它将不起作用,但你可以分两步完成。首先将你的html粘贴到Excel中,选择粘贴的内容并粘贴到Powerpoint中,效果很好。如果你粘贴了一个表格,没问题,就这样做,然后,你写第二个循环来创建一个新表格,而不是你从Excel到Powerpoint的那个。

编辑:根据错误在main中,你应该添加:

    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
    }

这个问题可以追溯到这里:c# WinForms:如何设置Main函数STAThreadAttribute