【问题标题】:Tag spot in word documentword文档中的标记点
【发布时间】:2011-08-05 21:50:24
【问题描述】:

如何在 Word 文档中标记“点”(可以是文本区域或文本字段)?我尝试在我的文档中放置一个纯文本内容控件,但是当我查看生成的 XML 时,该纯文本控件没有“别名”。我看到的所有代码都需要它有一个别名。我究竟做错了什么?还有另一种更简单的方法可以轻松“标记”文档中的某个位置并稍后检索其中的文本吗? (用户将输入文本...)

【问题讨论】:

  • 如何获取生成的 XML?通过从.docx中提取.zip?
  • @JMax 我正在使用处理底层细节的 OpenXML SDK。

标签: ms-word openxml word-2007 wordprocessingml


【解决方案1】:

通常,您使用书签。您可以标记特定地点,也可以为选择(区域)添加书签。它们正是您想要的,您会发现它们非常有帮助。

查看http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/2006/10/09/719.aspx,它应该可以帮助您入门。

文字处理机器学习

【讨论】:

  • 其实我在和设计师一起玩的时候意识到我可以在一个纯文本框内容控件上设置一个“tag”和一个“id”。现在我只需要弄清楚如何使用它的标签或使用它的 ID 来查找控件。
  • 一个简单的带有 XPath 的 XML 解析器可以毫不费力地做到这一点
【解决方案2】:

在 Visual Studio 中,我能够使用设计器来设置纯文本控件的属性。在属性上有一个“标签”属性,我将其设置为我想要的标签名称。然后使用这种方法我后来能够找到控件:

WordprocessingDocument document = WordprocessingDocument.Open(file.OpenBinaryStream(), true);

        var docPart = document.MainDocumentPart;
        // Find the first content control whose Alias property
        // matches the supplied name.
        var sdts = docPart.Document.Descendants<Tag>();
        foreach (var sdt in sdts)
        {
            string value = (string)sdt.Val;

            if (value.Equals(contentControlTag))
            {
                oxe = sdt;
                break;
            }
        }

        return oxe;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多