2017-09-26 3 views
0

J'essaye d'utiliser par programme la fonction de comparaison de Word intégrée pour faire une diff de deux versions du même document Word dans git.Python win32com module: CompareDocuments

Je viens d'essayer de faire décoller la partie du code en utilisant le module Python win32com. Voici ce que j'ai jusqu'à présent:

import win32com.client as win32 
word = win32.gencache.EnsureDispatch('Word.Application') 
word.CompareDocuments('old.docx', 'new.docx') 

Mais quand je lance ce code, je reçois l'erreur suivante:

TypeError: The Python instance can not be converted to a COM object 

Je ne sais pas grand-chose sur le module win32com ou des objets COM en général, est-ce que j'utilise mal cette fonction? Y at-il un meilleur module pour appeler la fonction de comparaison de Word? Je ne veux pas simplement enregistrer les documents Word en tant que texte et différer le texte, et je préfère utiliser Python.

Merci.

Répondre

0

Les arguments qui doivent être passés dans CompareDocuments() ne sont pas des chemins (chaînes) vers les fichiers, mais au lieu du type de classe Document. Vous devez d'abord ouvrir les documents Word et puis passer ceux dans 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) 

Notez que vous devez fournir le chemin absolu du fichier lors de l'ouverture, ou bien win32com ne peut pas le trouver.