2011-07-19 69 views
2

我有一個帶有一堆內容控件的word文檔。這些被映射到一個自定義的XML部分。爲了即時構建文檔,我簡單地覆蓋了自定義XML部分。使用自定義XML部件隱藏Word內容控件

我遇到的問題是,如果我沒有定義特定的項目,它的空間仍然在文檔中可見,推下了它下面的東西,看起來與文檔的其餘部分不一致。

這裏是我的代碼一個基本的例子:

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(); 
} 

有沒有辦法讓這些內容實際控制塌陷/隱藏?

+0

我現在也遇到了這個問題。你有沒有洞察到完成這個最好的方法? 2013年,我希望能夠與重複內容控制一起工作,但它不是非常直觀,感覺就像是黑客。 – JoeBrockhaus

+0

@JoeBrockhaus這已經過去了幾年,但我似乎記得內容控制有一個選項讓它看不見。我認爲這是通過Word佈局設置的,而不是通過代碼。希望能夠讓你走上正確的道路。 –

回答

0

我認爲在Word中打開docx或進行一些後處理(例如,通過宏)之前,您將不得不做一些預處理。

作爲預處理方法的示例,OpenDoPE定義了一個「條件」,您可以使用它來排除未定義的內容。

+0

我們必須直接編輯它,而不能用XML來完成。 –