2013-02-18 55 views
1

我想要做的是能夠在文檔中編寫一些隱藏標記,以便當用戶填寫一些信息時,我可以處理每個部分根據圍繞它的標記或部分的文檔。我使用.NET,有什麼想法?由於在.docx文檔中使用.Net編寫並閱讀隱藏標籤

+0

如何「隱藏」,難道一定要是?你可以使用書籤嗎? – 2013-02-18 17:04:32

+0

它需要隱藏的用戶不編輯/刪除它,這一切都是 – 2013-02-18 17:45:09

回答

2

SdtElements標籤看看,OpenXmlSdkWord 2007 Content Control Toolkit

的實質是:

  • 創建一個Word文檔將成爲您的模板
  • 在Word中,打開Developer tab
  • 在Developer選項卡中有一個Controls組。點擊「AA」的人插入一個新的內容標籤,單擊「屬性」來編輯標籤別名和數據,打開設計模式中看到的內容標籤

以下步驟適用,如果你的應用程序可以輸出XML,你會綁定到您的文檔:

  • 打開Word內容控件工具包
  • 打開創建
  • 在右側面板附加XML文檔
  • 內容標籤,雙擊編輯他們的XPath bin丁或使用拖放;看到WCCT手冊爲

一旦你的模板準備,根據您的實際任務在手,你可以做很多事情與這些內容的標籤,包括:

  • 在更換自定義XML部件的文檔更新數據的用戶將看到當他們打開它
  • 使用OPENXML SDK來代替數據而不在Word
  • 使用模板來收集數據,打開它(可能的,但不可靠的,不推薦)
  • 刪除,並通過OPENXML SDK

插入從代碼內容的標籤在你的代碼可以使用LINQ查詢找到內容標籤上OpenXmlSdk對象,像這樣:

var contentTags = document.MainDocumentPart.Document.Body 
       .Descendants<SdtElement>() 
       .Where(x => x.SdtProperties.GetFirstChild<Tag>() != null && x.SdtProperties.GetFirstChild<DataBinding>() != null) 
       .Select(x => x.SdtProperties.GetFirstChild<Tag>().Val.InnerText =="Whatever Tag you're looking for or other condition to match several") 
       .ToList(); 
+0

嗨Sten,非常感謝您的答案。除了閱讀位以外,我似乎很清楚。基本上,當用戶輸入信息時,我需要能夠處理這些信息,所以我需要能夠獲取文本以及它的「ID」,或文本所在的標籤名稱,它是否有意義?我再次感謝 – 2013-02-18 17:53:59

+1

@ user58760我添加了一個示例代碼,向您展示如何查找內容標籤,您可以在該代碼上構建或獲取由其標籤標識的內容標籤內的文本。 – 2013-02-18 18:10:35

+0

謝謝Sten我會讓你知道它是怎麼回事 – 2013-02-19 09:56:01

0

您可以使用自定義文檔屬性描述herehere