隐藏Word内容控制与自定义XML部分

本文关键字:XML 部分 自定义 Word 内容控制 隐藏 | 更新日期: 2023-09-27 18:02:27

我有一个word文档,上面有一堆内容控件。它们被映射到自定义XML部分。为了动态构建文档,我只需覆盖自定义XML部分。

我遇到的问题是,如果我不定义一个特定的项目,它的空间在文档中仍然是可见的,推下它下面的东西,看起来与文档的其余部分不一致。

下面是我代码的一个基本示例:
var path = HttpContext.Current.Server.MapPath("~/Classes/Word/LawyerBio.docx");
using (WordprocessingDocument myDoc = WordprocessingDocument.Open(path, true))
{
      //create new XML string
      //these values will populate the template word doc
      string newXML = "<root>";
      if (!String.IsNullOrEmpty(_lawyer["Recognition"]))
      {
          newXML += "<recognition>";
          newXML += _text.Field("Recognition Title");
          newXML += "</recognition>";
       }
       if (!String.IsNullOrEmpty(_lawyer["Board Memberships"]))
       {
          newXML += "<boards>";
          newXML += _text.Field("Board Memberships Title");
          newXML += "</boards>";
       }
       newXML += "</root>";
       MainDocumentPart mainPart = myDoc.MainDocumentPart;
       //delete old xml part
       mainPart.DeleteParts<CustomXmlPart>(mainPart.CustomXmlParts);
       //add new xml part
       CustomXmlPart customXml = mainPart.AddCustomXmlPart(CustomXmlPartType.CustomXml);
       using(StreamWriter ts = new StreamWriter(customXml.GetStream()))
       {
           ts.Write(newXML);
       }
       myDoc.Close();
}

是否有办法使这些内容控件实际上崩溃/隐藏?

隐藏Word内容控制与自定义XML部分

我认为您必须在Word中打开docx之前进行一些预处理,或者进行一些后处理(例如通过宏)。

作为预处理方法的一个例子,OpenDoPE定义了一个"条件",您可以使用它来排除未定义的内容。