首页 文章

在OpenXml中的Word文档中通过TagName查找内容控件

提问于
浏览
0

我试图使用OpenXml将文本插入到我的Word文档模板中的内容控件中 . 首先,我通过其标记名称搜索内容控件,然后在SdtBlock中添加段落元素,如下所示,

SdtBlock contentBlock = wordDoc.MainDocumentPart.Document.Body.Descendants<SdtBlock>()
   .Where(r => r.SdtProperties.GetFirstChild<Tag>().Val == "AssessmentSection")
   .Single();

但是,当我执行此语句时,我得到“对象引用未设置为对象的实例” . 错误信息 . 模板文档已经有另一个内容控件,我能够使用相同的上述语句找到该控件,只有标记名不同 . 但是在模板中添加“AssessmentSection”内容控件并运行程序后,我得到“EvaluSection”控件的“Object Reference ...”错误,程序失败 . 我确信新的内容控件标记名称和 Headers 与其他内容控件是唯一的 .

有人可以帮助我为什么会发生这种奇怪的行为以及如何解决它?

1 回答

  • 0

    你也可以循环文件ContentControls项目并检查他们的标签,如:

    foreach (Word.ContentControl contentcontrol in wordDoc.ContentControls)
    {
       if (contentcontrol.Tag != null)
       {
              ...
       }
    }
    

相关问题