如何通过OpenXML在Content Control中插入文本格式

时间:2013-09-18 12:14:25

标签: data-binding openxml openxml-sdk

我正在获取一些数据,我正在生成一个自定义XML文件。我有一个带有RTF内容控件的Microsoft Office Word文档。我用这种方法将数据绑定到内容控件:

private void BindControl(WordprocessingDocument doc, string controlTitle, DocumentFormat.OpenXml.StringValue xPathValue)
{
    DataBinding dataBinding = new DataBinding()
    {
        XPath = xPathValue,
        StoreItemId = "{SomeID}"
    };
    SdtElement sdtElement = doc.MainDocumentPart.Document.Descendants<SdtElement>()
        .Where(
            element =>
            element.SdtProperties.GetFirstChild<SdtAlias>() != null &&
            element.SdtProperties.GetFirstChild<SdtAlias>().Val == controlTitle).FirstOrDefault();
    if (sdtElement != null)
    {
        sdtElement.SdtProperties.Append(dataBinding);
    }
}

但是,此方法仅插入文本而不进行格式化。

我想在输出文档Bold中创建一些thext,其他颜色不同,然后我必须创建超链接。

我尝试在XML文件中插入html格式,但结果却没有呈现,只是显示。

1 个答案:

答案 0 :(得分:0)

您无法绑定富文本内容控件。

[MS-DOCX]修正了2.5.1.6 dataBinding

  

如果父结构化文档标记不是富文本类型(如   在[ISO / IEC29500-1:2011]第17.5.2.26节)中规定   表现得像dataBinding(在[ISO / IEC29500-1:2011]中指定)   第17.5.2.6节)元素,否则数据存储在XML中   element将是一个由flattened组成的转义字符串   WordprocessingML文档表示格式化数据   结构化文档标记范围。

但是,您可以在纯文本控件的内容控件属性中包含运行属性(w:rPr)。