6

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

4

2 回答 2

10

阿诺普,

您说您可以使用 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 添加到其中吗?

于 2009-12-11T17:57:42.177 回答
3

在 www.codeplex.com 上查看 Word Content Control Toolkit。

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

  1. 您需要有权访问 Word 功能区上的开发人员选项卡。要使其正常工作,请单击左上角的 Office (Round thingy),然后在菜单底部选择 Word 选项。在第一个选项页面上,有一个复选框来显示开发人员工具栏。

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

  3. 保存并关闭word文档。

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

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

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

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

我希望这个简短的解释能让你启动并运行。

于 2009-12-07T11:48:07.870 回答