检索隐藏的文本块并替换其中两个之间的所有内容

时间:2018-07-06 18:42:34

标签: c# openxml

我想使用OpenXML通过将给定文档作为模板来自动创建Word文档。该模板包含具有特殊语法(例如The cover must be an image ... «tagname[»)的文本块,这些文本块为隐藏文本(在字体对话框中,“效果”部分中的“隐藏”复选框已激活) ),这样它们就不会在打印文档时出现。

根据«]tagname»,我想用一些其他内容(例如,在tagname中的内容{{1} }将用«today[»01/01/2000«]today»代替),最好保留格式(例如,粗体,斜体或文本颜色)。

如何检索隐藏的文本部分?有没有一种简便的方法可以使用C#替换相应标签之间的所有内容?

1 个答案:

答案 0 :(得分:1)

我不确定模板中的文本块到底是什么。相反,您可以在需要的位置使用“开发人员”选项中的“内容控制”,然后可以从内容控件的属性中为其命名。

enter image description here

今天将是内容控件的名称

在模板上拥有所有内容控件之后,您可以查找带有名称的特定内容控件并添加所需的新值。

以下是摘录,让您有个主意。

   // Title is name of content control(today), value is what you want to add(1/01/2000)

  private static void UpdateControl(WordprocessingDocument document, string title, string value)
    {
        MainDocumentPart mainPart = document.MainDocumentPart;
        var sdtRuns = mainPart.Document.Descendants<SdtRun>()
        .Where(run => run.SdtProperties.GetFirstChild<Tag>().Val.Value == title);

        foreach (SdtRun sdtRun in sdtRuns)
        {
            sdtRun.Descendants<Text>().First().Text = value;
        }

        document.MainDocumentPart.Document.Save();
    }