0

我正在使用带有 MS Word (Microsoft.Office.Interop.Word) 的 Office Interop 来修改模板,用文本部分替换模板中的书签。我有一个方法可以做到这一点:

public void ReplaceBookmarkText(Bookmark bookmark, string newValue)
{
    if (newValue != null) {
        bookmark.Range.Text = newValue;
    }
}

这适用于纯文本。我想创建一个新方法,其中第二个参数可以是HTML代码,代码转换为格式化文本,替换掉Range的文本。如果我能按照自己的方式做事,我会写这样的东西:

public void ReplaceBookmarkTextWithHtml(Bookmark bookmark, string html)
{
    if (newValue != null) {
        bookmark.Range.Html = html;
    }
}

当然,Html不是Range班级成员。我还尝试了以下方法:

public void ReplaceBookmarkTextWithHtml(Bookmark bookmark, string html)
{
    if (newValue != null) {
        bookmark.Range.FormattedText = html;
    }
}

但是,这不起作用,因为该FormattedText属性是 type Range

关于如何做到这一点的任何想法?

4

2 回答 2

1

我能够做到这一点的唯一方法是将html文本保存到一个临时的.html文件中,然后将文件插入到文档中,即:

bookmark.Range.InsertFile("tmp.html");
于 2012-09-06T13:41:26.010 回答
0

这是我最终想出的解决方案。它涉及执行复制和粘贴。

public void ReplaceBookmarkTextWithHtml(Bookmark bookmark, string html)
{
    if (html != null) {
        Clipboard.SetData(DataFormats.Html, ClipboardFormatter.Html(html));
        bookmark.Range.PasteSpecial(DataType: WdPasteDataType.wdPasteHTML);
    }
}
于 2012-10-30T17:42:12.893 回答