将word文档(.docx)与文档模板(.dotx)

时间:2015-10-16 05:33:54

标签: c# openxml

有什么方法可以将word文档(.docx)与在Microsoft Word中生成的文档模板(.dotx)进行比较。

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

我想逐个单词地比较两个文档,以便我可以确定文档属于哪个模板。我不只是想比较两者的大小,但我也想比较内容。

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

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

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

  3. 同样,我也希望提取其他信息,例如链接到其他文档等。

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

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

  5. 有什么建议吗?

    谢谢。

1 个答案:

答案 0 :(得分:0)

你的问题过于模糊,而且涉及得到一个非常好的答案,但是......

  1. 要找出生成文档的模板,对象模型提供了属性:Document.AttachedTemplate with将返回完整的文件名。这肯定比逐字逐句(这也非常耗时)更好

  2. Word对象模型还提供方法CompareDocuments(属于Word.Application类)。这将突出显示"两个文件的文本内容存在差异。

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

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