【问题标题】:Compare word documents(.docx) with a document template(.dotx)将 word 文档 (.docx) 与文档模板 (.dotx) 进行比较
【发布时间】:2015-10-16 05:33:54
【问题描述】:

有什么方法可以比较 word 文档(.docx)和 microsoft word 中生成的文档模板(.dotx)。

我想使用 c# 以编程方式进行此比较。

我想逐字比较两个文档,以便确定文档属于哪个模板。我不仅想比较两者的大小,还想比较内容。

通过这种比较,我想得到以下结果。

  1. 文档是从哪个文档模板生成的。
  2. 在文档模板中,我想检查特定信息存储在哪个位置。

    比如说我想搜索一个人的通讯信息,然后我想遍历文档并检查模板在哪个位置有地址的区域/部分。(即左上角,顶部中心,在一个段落中,在正文中等)

  3. 以同样的方式,我也想提取其他信息,例如指向其他文档的链接等。

  4. 获得这些职位后,我想从 .Docx 文件中获取该信息。

    说,如果我发现左上角的地址有五个链接指向五个不同段落中的其他文档。然后我想要的是获取地址并将其保存到变量中。之后,我想将这些链接内容从占位符替换为实际超链接。即,如果链接指的是 Doc-A,那么我想用指向 Doc-A 的超链接替换它,而不是只显示纯文本。

有什么建议吗?

谢谢。

【问题讨论】:

    标签: c# openxml


    【解决方案1】:

    你的问题太模糊了,太复杂了,无法给出一个很好的答案,但是......

    1. 为了找出文档是从哪个模板生成的,对象模型提供了以下属性:Document.AttachedTemplate 将返回完整的文件名。这肯定比逐字比较好(这也很耗时)

    2. Word 对象模型还提供方法 CompareDocuments(属于 Word.Application 类)。这将“突出”两个文档的文本内容的差异。

    3. 链接将在 Document.Hyperlinks 集合中找到

    4. 使用 Word 获取事物的位置有点偶然,这取决于“左上角”等的真正含义。最好使用内容控件、表单字段和/或构建模板书签,以便您可以唯一地标识重要部分。但是,Word 确实提供了 Range.get_Information 方法,该方法可以返回页面上的相对和绝对位置,如果这是您真正想要的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-14
      • 2018-10-11
      • 2015-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多