使用Xceed WPF工具包中的富文本格式的DocX ReplaceText

时间:2018-10-06 15:11:00

标签: c# richtextbox docx wpftoolkit xceed

无法使用Microsoft.Office.Interop.Word,我正在使用Xceed DocX从WPF字段中获取数据并将其写入Word文件。我需要用文本和RTB中的格式替换Word文件中的«field»。如果我使用像这样的简单内容:

/// <summary>
/// Replaces field location with given formatted text
/// </summary>
/// <param name="mergeField">Target location</param>
/// <param name="textToWrite">Rich, formatted text to process and insert</param>
public static void FindReplaceRich(string mergeField, string textToWrite)
{
    while (document.FindAll(mergeField).Count > 0)
    {
        document.ReplaceText("«" + mergeField + "»", textToWrite);                
    }
}

上面的代码用于未格式化的文本,因此在这种情况下,我的Word文件得到了一个愚蠢的RTF内容,就像这样: {\ rtf1 \ ansi \ ansicpg1252 \ uc1 \ htmautsp \ deff0 { \ fonttbl {\ f0 \ fcharset0 Times New Roman;}} {\ colortbl \ red0 \ green0 \ blue0; \ red255 \ green255 \ blue255; \ red124 \ green252 \ blue0;} \ loch \ hich \ dbch \ pard \ plain \ ltrpar \ itap0 {\ lang1033 \ fs18 \ f0 \ cf0 \ cf0 \ ql {\ f0 {\ ltrch这是} {\ highlight2 \ ltrch} {\ ltrch哑巴。 } \ li0 \ ri0 \ sa0 \ sb0 \ fi0 \ ql \ par} } }

那我该如何处理这种富文本格式,以便可以使用Xceed的DocX库将其插入到Word文件中?

到目前为止,我已经尝试使用Clibboard as described here,但不确定是否正确复制了文本或如何应用粘贴的内容。我也尝试使用DocX的InsertParagraph,但这看起来像是在文档中添加了一个段落(而且我还没有解决格式问题)。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

如果要用值替换标签,建议您为docx使用“模板引擎”。我碰巧创建了一个自己:https://github.com/open-xml-templating/docxtemplater

使用开源版本时,如果您想用简单的文本替换标签或执行循环/条件(HTML插入等其他高级功能是付费扩展),则通常会很好。

相关问题