我试图以编程方式使用Word的内置比较函数在git中对同一个Word文档的两个版本进行差异。
我一直试图通过使用Python win32com模块来实现代码的比较部分。这是我到目前为止所做的:
import win32com.client as win32
word = win32.gencache.EnsureDispatch('Word.Application')
word.CompareDocuments('old.docx', 'new.docx')
但是当我运行此代码时,我收到以下错误:
TypeError: The Python instance can not be converted to a COM object
我对win32com模块或COM对象一般不太了解,我是否滥用此功能?是否有更好的模块来调用Word的比较功能?我不想将Word文档保存为文本并对文本进行区分,我更喜欢使用Python。
谢谢。
答案 0 :(得分:0)
必须传递给CompareDocuments()
的参数不是文件的路径(字符串),而是Document
类类型。您必须先打开Word文档,然后将其传递到CompareDocuments()
:
import win32com.client as win32
word = win32.gencache.EnsureDispatch('Word.Application')
doc_old = word.Documents.Open('C:/abs/path/to/file/old.docx')
doc_new = word.Documents.Open('C:/abs/path/to/file/new.docx')
word.CompareDocuments(doc_old, doc_new)
请注意,必须在打开时提供文件的绝对路径,否则win32com无法找到它。