如何使用OpenXML在Word 2007文档中添加内容控件

时间:2009-12-04 08:56:39

标签: ms-word openxml openxml-sdk office-2007

我想在不使用对象模型的情况下创建单词2007文档。所以我更喜欢使用开放的xml格式创建它。到目前为止,我已经能够创建该文档。现在我想在其中添加一个内容控件并将其映射到xml。任何人都可以指导我相同的???

2 个答案:

答案 0 :(得分:9)

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添加到它吗?

答案 1 :(得分:3)

在www.codeplex.com上查看Word内容控制工具包。

以下是关于如何做你正在尝试的事情的非常简短的解释。

  1. 您需要访问Word功能区上的开发人员选项卡。要实现此功能,请单击左上角的Office(Round thingy)并选择菜单底部的Word Options。在第一个选项页面上有一个复选框,显示开发人员工具栏。

  2. 使用开发人员工具栏在页面上添加所需的内容控件。单击开发人员栏的“内容控件”部分中的“属性”按钮,然后设置名称和标签属性(我坚持使用相同的名称命名名称和标签字段)。

  3. 保存并关闭word文档。

  4. 打开内容控制工具包,然后使用工具包打开文档。使用左手疼痛创建一些自定义xml以链接到您的控件。

  5. 现在使用绑定视图拖放自定义xml与工具包右侧面板中显示的自定义控件之间的映射。

  6. 您可以使用openxml sdk 1.0或2.0(仍在ctp中)在代码中打开word文档,并访问作为word文档一部分包含的自定义xml文件。

  7. 如果你想看看你的word文档看起来像xml。制作word文档的副本,然后将其重命名为“a.zip”。双击zip文件,然后导航文件夹结构。 word文档的主要内容保存在名为“document.xml”的文件中的word文件夹下。文档的自定义xml部分保存在customXml文件夹下,通常位于名为“item1.xml”的文件中。

    我希望这个简短的解释可以让你开始运作。