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

时间:2015-07-16 18:05:09

标签: c# openxml contentcontrol

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

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

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

有人可以帮助我为什么会出现这种奇怪的行为以及如何解决这个问题???

1 个答案:

答案 0 :(得分:-1)

您还可以循环文档ContentControls项目并检查其标签,例如:

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