1

我想做的是能够在文档中写一些隐藏的标记,这样当用户填写一些信息时,我就可以根据标记或围绕它的部分来处理文档的每个部分。我正在使用.NET,有什么想法吗?谢谢

4

2 回答 2

2

看看SdtElements标记、OpenXml SdkWord 2007 内容控制工具包

本质是:

  • 创建一个 Word 文档作为您的模板
  • 在 Word 中,打开开发人员选项卡
  • 在 Developer 选项卡中有一个 Controls 组。单击“Aa”插入新的内容标签,单击“属性”编辑标签别名和数据,打开设计模式查看内容标签

如果您的应用程序可以输出您将绑定到文档的 XML,则以下步骤适用:

  • 打开 Word 内容控制工具包
  • 打开您创建的文档
  • 在右侧面板中附加一个 xml
  • 双击内容标签以编辑其 XPath 绑定或使用拖放;请参阅 WCCT 手册

准备好模板后,根据您手头的实际任务,您可以使用这些内容标签做很多事情,包括:

  • 替换文档中的自定义 xml 部分以更新用户在打开它时将看到的数据
  • 使用 openxml sdk 替换数据而不在 Word 中打开它
  • 使用模板收集数据(可能但不可靠,不推荐)
  • 通过 openxml sdk 从代码中删除和插入内容标签

在您的代码中,您可以通过对 OpenXmlSdk 对象使用 LINQ 查询来找到内容标签,如下所示:

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();
于 2013-02-18T17:20:25.440 回答
0

您可以使用此处此处所述的自定义文档属性

于 2013-02-18T17:19:07.460 回答