Wir verbreiten Dokumente
.
In einem früheren
Beitrag haben wir uns angesehen, wie eine Abfrage mit Python in Word gefüllt wird. Dieses Mal wird gezeigt, wie mehrere Word-Dokumente gleichzeitig mit Daten aus der Excel-Tabelle gefüllt werden.
Bevor wir mit dem Programm arbeiten können, müssen wir eine Excel-Datei vorbereiten, die die Quelldaten enthält. Lassen Sie uns eine Excel-Datei mit solchen Daten erstellen oder eine vorgefertigte verwenden:

Wenden wir uns nun dem Programm zu.
Da wir die Excel-Datei lesen müssen, müssen wir das entsprechende Modul importieren:
import openpyxl
Als nächstes müssen wir die Tabelle durchgehen und alle Daten Zeile für Zeile lesen. Es wird so aussehen:
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
Wir haben eine leere Liste erstellt, in der wir in Zukunft die Werte aus der Tabelle hinzufügen. Das Hinzufügen erfolgt nur, wenn Einträge in der Zelle vorhanden sind (nicht ungültig).
Nach den durchgeführten Manipulationen fügen wir die gesammelten Daten zur Wortvorlage hinzu:
doc = DocxTemplate(".docx") context = { 'emitent' : test[0],'address1' : test[1],'' : test[2],'_' : test[3],'director' : test[4] } doc.render(context) doc.save('-final.docx')
Als Ergebnis haben wir eine fertige Wortdatei mit Daten aus der Tabelle. Nur hier ist es alleine und wird als Template-Finale bezeichnet. Wie kann man dann Dokumente voneinander unterscheiden?
Beginnen wir mit einem einfachen. Um Dateien jedes Mal unter verschiedenen Namen zu speichern, müssen Sie am Ende des Codes Folgendes ändern:
doc.save(test[x]+'.docx')
Jetzt hat die gespeicherte Datei den Namen des Unternehmens, das die Anfrage gesendet hat.
Während der Programmausführung kann ein Fehler auftreten:

Dieser Fehler ist darauf zurückzuführen, dass der Name des Unternehmens Anführungszeichen enthält. Wenn Sie Anführungszeichen aus der Excel-Tabelle entfernen, wird die Word-Datei erfolgreich unter dem Namen Company-1.docx gespeichert.
Es bleibt, das Dokument durch Eingabe der verbleibenden Daten aus der Tabelle zu "duplizieren".
Alles hier ist auch einfach. Wir erstellen einen Zyklus anhand unserer gesammelten Daten:
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
Springen Sie am Ende des Zyklus zum Namen der Spalte mit dem Firmennamen, damit die Wortdatei unter dem richtigen Namen gespeichert wird.
Das Programm ist fertig! Es bleibt nur eine Excel-Tabelle mit Unternehmen zu erstellen, die im Dienst sind.
Laden Sie hier das fertige Programm herunter.
Laden Sie hier die Excel-Tabelle mit Testdaten herunter.
Die Word-Dokumentvorlage ist
hier .
--- Update --- 11/08/2019
.
Hinzugefügt :
- die Wortvorlage der Antwort des Begünstigten;
- Die Wortanforderungsvorlage wurde um die Anzahl der Felder (Position des Direktors) erweitert.
- Jetzt können Sie in der Tabelle die Namen der Unternehmen mit Anführungszeichen eintragen.
das Programm wird verdauen;
- Beim Speichern der Ausgabeanforderungsdateien speichert das Programm „wunderschön“: Das Unternehmen ist ein Direktor, der bei der Arbeit mit einer großen Anzahl von Dateien Klarheit schafft.
- Beim Speichern der Ausgabeantwortdateien speichert das Programm: den Teilnehmer-Direktor, auf den sie geantwortet haben (da der Teilnehmer normalerweise mehrere Unternehmen gleichzeitig beantworten kann und die Dateinamen dupliziert werden).
Laden Sie hier das Antragsprogramm des Empfängers herunter
Laden Sie hier das Antwortprogramm herunter
Laden Sie hier die Excel-Tabelle mit Testdaten herunter
Wortvorlage für Begünstigte -
hierWord-Antwortvorlage -
hier