1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| #!/usr/bin/env python
# -*- coding: utf-8 -*-
import win32com.client as win32
class Docword():
# Définition des constantes de class pour les paramètres de commande pywin32
wdReplaceNone=0
wdReplaceOne=1
wdReplaceAll=2
wdFindContinue=1
wdAllowOnlyFormFields=2
NoReset=True
#pour close/save :
wdDoNotSaveChanges=0
wdSaveChanges=-1
wdCharacter=1
wdCell=12
wdLine=5
wdAlignLeft=0
wdAlignCenter=1
wdAlignRight=2
def __init__(self,nom_modele,nom_doc_finale):
self.nom_modele=nom_modele
self.nom_doc_finale=nom_doc_finale
self.w = win32.gencache.EnsureDispatch('Word.Application') # Démarrage de word
self.w.Visible = False # le fichier est non visible
self.doc = self.w.Documents.Open(self.nom_modele)
def chRemplAll(self, oldchaine, newchaine=''):
"""
oldchaine = chaine a remplacer / string to replace
newchaine = chaine de remplacement / string for replace
"""
sel = self.w.Selection
sel.ClearFormatting()
sel.Find.Text = oldchaine
sel.Find.Forward = True
newchaine=newchaine.replace('\n','\r')
sel.Find.Execute( oldchaine,False,False,False,False,False,True,self.wdFindContinue,False,newchaine,self.wdReplaceAll)
def close_doc(self):
self.doc.Protect (self.wdAllowOnlyFormFields,self.NoReset) #Protection
self.doc.SaveAs(self.nom_doc_finale) # Sauvegarde du ficher
self.doc.Close(0, 1) # 0 = Pas de changement, 1 = original format
d=Docword(r"D:\python\forum\modif-word\modele-1.docx",r"D:\python\forum\modif-word\doc-final.docx")
d.chRemplAll("{nom}","Dupont")
d.close_doc()
print "fin" |
Partager