Nous propageons des documents
.
Dans un article précédent, nous avons examiné comment remplir une requête dans Word en utilisant Python. Cette fois, il sera démontré comment remplir simultanément plusieurs documents Word avec les données du tableau Excel.
Avant de travailler avec le programme, nous devons préparer un fichier Excel, qui contiendra les données source. Créons un fichier Excel avec de telles données ou utilisons un fichier prêt à l'emploi:

Passons maintenant au programme.
Comme nous devons lire le fichier Excel, nous devons importer le module correspondant:
import openpyxl
Ensuite, nous devons parcourir le tableau et lire toutes les données ligne par ligne. Cela ressemblera à ceci:
test=[] wb = openpyxl.load_workbook('zaprosi.xlsx') sheet=wb.get_active_sheet() for row in sheet['B3':'F7']: for cellObj in row: if cellObj.value==None or cellObj.value==" ": continue
Nous avons créé une liste vide, où nous ajouterons les valeurs de la table à l'avenir. L'ajout se produit uniquement s'il y a des entrées dans la cellule (non annulées).
Après les manipulations effectuées, nous ajouterons les données collectées au modèle Word:
doc = DocxTemplate(".docx") context = { 'emitent' : test[0],'address1' : test[1],'' : test[2],'_' : test[3],'director' : test[4] } doc.render(context) doc.save('-final.docx')
En conséquence, nous aurons un fichier Word fini avec les données de la table. Seulement ici, il est seul, et c'est ce qu'on appelle le modèle final. Comment alors distinguer les documents les uns des autres?
Commençons par un simple. Pour enregistrer des fichiers sous des noms différents à chaque fois, vous devez modifier les éléments suivants à la fin du code:
doc.save(test[x]+'.docx')
Maintenant, le fichier enregistré portera le nom de la société qui envoie la demande.
Une erreur peut se produire lors de l'exécution du programme:

Cette erreur est due au fait que le nom de l'entreprise contient des guillemets. Si vous supprimez les guillemets du tableau Excel, le fichier Word sera enregistré avec succès sous le nom Company-1.docx.
Il reste à "dupliquer" le document en saisissant les données restantes du tableau.
Ici aussi, tout est simple. Nous créons un cycle en fonction de nos données collectées:
x=0 while x<len(test): doc = DocxTemplate(".docx") context = { 'emitent' : test[x],'address1' : test[x+1],'' : test[x+2],'_' : test[x+3],'director' : test[x+4] } doc.render(context) doc.save(test[x]+'.docx') x+=5
À la fin du cycle, «sautez» jusqu'au nom de la colonne avec le nom de l'entreprise afin que le fichier de mots soit enregistré avec le nom correct.
Le programme est prêt! Il ne reste plus qu'à créer une table Excel avec les entreprises en service.
Téléchargez le programme terminé
ici .
Téléchargez le tableau Excel avec les données de test -
ici .
Le modèle de document Word est
ici .
--- Mise à jour --- 11/08/2019
.
Ajouté :
- le modèle Word de la réponse du bénéficiaire;
- le modèle de demande de mots a été élargi par le nombre de champs (poste de directeur);
- maintenant dans le tableau, vous pouvez remplir les noms des entreprises avec des devis,
le programme va digérer;
- lors de l'enregistrement des fichiers de sortie des demandes, le programme enregistre «magnifiquement»: le chef d'entreprise, qui ajoute de la clarté lors de l'utilisation d'un grand nombre de fichiers;
- lors de l'enregistrement des fichiers de réponses de sortie, le programme enregistre: le participant-réalisateur-qui a répondu (car généralement le participant peut répondre à plusieurs sociétés à la fois et les noms de fichiers sont dupliqués)
Téléchargez le programme de demande de bénéficiaire -
iciTéléchargez le programme de réponses -
iciTéléchargez la feuille de calcul Excel avec les données de test -
iciModèle Word de demande de bénéficiaire -
iciModèle de réponse Word -
ici