2012-09-06 100 views
0

我正在使用Office Interop和MS Word(Microsoft.Office.Interop.Word)來修改模板,將模板中的書籤替換爲部分文本。我有一個這樣做的方法:用格式化(HTML)文本替換Word文檔中的書籤範圍

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屬性是Range類型。

關於如何做到這一點的任何想法?

回答

0

這是我最終來到了解決方案與...一起。它涉及執行復制和粘貼。

public void ReplaceBookmarkTextWithHtml(Bookmark bookmark, string html) 
{ 
    if (html != null) { 
     Clipboard.SetData(DataFormats.Html, ClipboardFormatter.Html(html)); 
     bookmark.Range.PasteSpecial(DataType: WdPasteDataType.wdPasteHTML); 
    } 
} 
1

唯一的辦法我能做到這一點是通過保存HTML文本到一個臨時.html文件,然後插入文檔裏面的文件,即:

bookmark.Range.InsertFile("tmp.html");