以编程方式比较Microsoft Office文件

时间:2014-07-31 19:50:43

标签: c# python office-interop pywin32

我正在寻找最简单的方法来查看两个Office文件是否使用Python具有相同的内容。我的第一直觉是使用filecmp.cmp,但这种方法在逻辑上失败了,因为两个文件不一定包含相同的二进制信息,即使它们具有相同的内容。

In [10]: import win32com.client

In [11]: word = win32com.client.Dispatch("Word.Application")

In [12]: doc = word.Documents.Add()

In [13]: doc.SaveAs(FileName = "test.docx")

In [14]: doc.SaveAs(FileName = "test2.docx")

In [15]: import filecmp

In [16]: filecmp.cmp("test.docx","test2.docx")
Out[16]: False

接下来,我可以尝试手动比较文件内容:

def compareWordDocs(self, worddoc1_path, worddoc2_path):

    worddoc1 = self._wordapp.Documents.Open(FileName = worddoc1_path)
    worddoc2 = self._wordapp.Documents.Open(FileName = worddoc2_path)

    worddoc1_content_text = worddoc1.Content.Text
    worddoc2_content_text = worddoc2.Content.Text

    worddoc1.Close(SaveChanges = 0)
    worddoc2.Close(SaveChanges = 0)

    return worddoc1_content_text == worddoc2_content_text

但是,这也可能是一个问题,因为Office文档除了文本之外还可以包含许多内容。 Microsoft是否提供任何可以让我执行类似__eq__().equals()功能的功能,可以确定内容是否相等?我需要一个尽可能多的Microsoft Office产品的解决方案,尽管我意识到考虑到文件的性质,解决方案可能因产品而异。

0 个答案:

没有答案