2009-12-04 71 views
5

我想在不使用對象模型的情況下創建Word 2007文檔。所以我寧願使用開放的xml格式來創建它。到目前爲止,我已經能夠創建文檔。現在我想添加一個內容控件並將其映射到xml。任何人都可以引導我相同的?如何使用OpenXML在Word 2007文檔中添加內容控件

回答

7

Anoop,

你說,你能創造使用OpenXmlSdk文檔。通過這種假設,您可以使用以下代碼創建內容控件,以添加到Document的Wordprocessing.Body元素中。

//praragraph to be added to the rich text content control 
Run run = new Run(new Text("Insert any text Here") { Space = StaticTextConstants.Preserve }); 
Paragraph paragraph = new Paragraph(run); 

SdtProperties sdtPr = new SdtProperties(
     new Alias { Val = "MyContentCotrol" }, 
     new Tag { Val = "_myContentControl" }); 
SdtContentBlock sdtCBlock = new SdtContentBlock(paragraph); 
SdtBlock sdtBlock = new SdtBlock(sdtPr, sdtCBlock); 

//add this content control to the body of the word document 
WordprocessingDocument wDoc = WordprocessingDocument.Open(path, true); //path is where your word 2007 file is 
Body mBody = wDoc.MainDocumentPart.Document.Body; 
mBody.AppendChild(sdtBlock); 

wDoc.MainDocumentPart.Document.Save(); 
wDoc.Dispose(); 

我希望這會回答你的問題的一部分。我不明白「將它映射到XML」的含義。你的意思是說你想創建CustomXmlBlock並將ContentControl添加到它嗎?

+0

Thanx的答案! 儘管我已經在MSDN中得到了一篇很好的文章,它也解釋了XML映射... http://msdn.microsoft.com/en-us/library/dd469465.aspx – Anoop 2009-12-14 07:26:12

+1

在OpenXML SDK 2中,Alias現在是SdtAlias。 – 2016-09-19 19:02:33

3

查看www.codeplex.com上的Word內容控制工具包。

這是關於如何做你正在嘗試的一個非常簡短的解釋。

  1. 您需要訪問Word功能區上的開發人員選項卡。要實現這一點,請點擊左上角的辦公室(Round thingy)和菜單底部的Select Word Options。在第一個選項頁面上,有一個複選框顯示開發人員工具欄。

  2. 使用開發人員工具欄在頁面上添加所需的內容控件。單擊開發人員欄的「內容」控件部分中的屬性按鈕,然後設置名稱和標記屬性(我堅持使用相同的名稱命名名稱和標記字段)。

  3. 保存並關閉word文檔。

  4. 打開內容控制工具包,然後用工具包打開文檔。使用左手痛苦創建一些自定義xml鏈接到您的控件。

  5. 現在使用綁定視圖拖放自定義xml和顯示在工具箱右側面板中的自定義控件之間的映射。

  6. 您可以使用openxml sdk 1.0或2.0(仍在ctp中)在代碼中打開word文檔,並訪問作爲word文檔一部分包含的自定義xml文件。

如果你想看看你的Word文檔看起來如何是XML。製作Word文檔的副本,然後重命名爲「a.zip」。雙擊壓縮文件,然後導航文件夾結構。 Word文檔的主要內容保存在名爲「document.xml」的文件夾下。文檔的自定義xml部分位於customXml文件夾下,通常位於名爲「item1.xml」的文件中。

我希望這個簡短的解釋讓你開始運行。

+0

我想添加內容控制編程使用打開xml sdk .... – Anoop 2009-12-09 07:17:48

相關問題