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

Ms word 如何使用OpenXML在Word 2007文档中添加内容控件,ms-word,openxml,openxml-sdk,office-2007,Ms Word,Openxml,Openxml Sdk,Office 2007,我想在不使用对象模型的情况下创建word 2007文档。所以我更喜欢使用开放式xml格式创建它。到目前为止,我已经能够创建文档。现在我想在其中添加一个内容控件,并将其映射到xml。有谁能为我提供相同的指导吗?在www.codeplex.com上查找Word内容控制工具包 下面是一个关于如何做你正在尝试的事情的非常简短的解释 您需要有权访问Word功能区上的“开发人员”选项卡。要获得此功能,请单击左上角的Office(圆形),然后选择菜单底部的Word选项。在第一个选项页面上,有一个复选框显示开发

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

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

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

  • 您需要有权访问Word功能区上的“开发人员”选项卡。要获得此功能,请单击左上角的Office(圆形),然后选择菜单底部的Word选项。在第一个选项页面上,有一个复选框显示开发者工具栏

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

  • 保存并关闭word文档

  • 打开内容控制工具包,然后使用该工具包打开文档。使用左手创建一些自定义xml链接到控件

  • 现在,使用绑定视图拖放自定义xml和工具箱右侧面板中显示的自定义控件之间的映射

  • 您可以使用OpenXMLSDK1.0或2.0(仍在ctp中)以代码形式打开word文档,并访问作为word文档一部分包含的自定义xml文件

  • 如果您想了解word文档作为xml的外观。复制word文档,然后将其重命名为“a.zip”。双击zip文件,然后浏览文件夹结构。word文档的主要内容保存在word文件夹下一个名为“document.xml”的文件中。文档的自定义xml部分保存在customXml文件夹下,通常位于名为“item1.xml”的文件中

    我希望这个简短的解释能让你开动脑筋。

    您说过可以使用OpenXmlSdk创建文档。根据该假设,您可以使用以下代码创建内容控件,以添加到文档的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吗?

    Thanx!!虽然我已经在MSDN中得到了一篇很好的文章,其中也解释了XML映射。。。在OpenXMLSDK2中,别名现在是SdtAlias。