kombinieren Sie word-Dokument mit python docx
Ich habe einige word-Dateien, die jeweils spezifische Inhalte. Ich möchte für ein snippet, das mir zeigen oder mir helfen, um herauszufinden, wie kombinieren Sie die word-Dateien in einer Datei, während mit Python docx
Bibliothek.
Beispielsweise in der pywin32-Bibliothek habe ich Folgendes:
rng = self.doc.Range(0, 0)
for d in data:
time.sleep(0.05)
docstart = d.wordDoc.Content.Start
self.word.Visible = True
docend = d.wordDoc.Content.End - 1
location = d.wordDoc.Range(docstart, docend).Copy()
rng.Paste()
rng.Collapse(0)
rng.InsertBreak(win32.constants.wdPageBreak)
Aber ich muss es tun, während mit Python docx
Bibliothek statt win32.client
ich schrieb nochmal die Frage @abarnert
Die Frage, wie re-geschrieben, sieht sehr verantwortlich. Danke @omri_saadon
Verantwortlich, ja, aber jetzt ist er von uns verlangt, port seinen code aus einer Bibliothek zu einer anderen, die immer noch nicht angemessen für SO. Vor allem, da er noch nicht gezeigt, jede seiner docx-code beschrieben ist, oder wie weit er gekommen ist und wo er stecken geblieben ist außer in vages Bedingungen.
ich weiß nicht, wie es zu tun, meine Idee war, laufen über jedes Dokument (laufen über Absätze und Tabellen) und kopieren Sie es irgendwie auf die neue word-Datei. auch wenn Sie eine Allgemeine Idee, wie es zu tun i ' L werden mehr als froh. ich bin vertraut mit dieser Bibliothek für ein paar Tage. @abarnert –
Die Frage, wie re-geschrieben, sieht sehr verantwortlich. Danke @omri_saadon
Verantwortlich, ja, aber jetzt ist er von uns verlangt, port seinen code aus einer Bibliothek zu einer anderen, die immer noch nicht angemessen für SO. Vor allem, da er noch nicht gezeigt, jede seiner docx-code beschrieben ist, oder wie weit er gekommen ist und wo er stecken geblieben ist außer in vages Bedingungen.
ich weiß nicht, wie es zu tun, meine Idee war, laufen über jedes Dokument (laufen über Absätze und Tabellen) und kopieren Sie es irgendwie auf die neue word-Datei. auch wenn Sie eine Allgemeine Idee, wie es zu tun i ' L werden mehr als froh. ich bin vertraut mit dieser Bibliothek für ein paar Tage. @abarnert –
InformationsquelleAutor omri_saadon | 2014-07-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn sich Ihre Bedürfnisse sind einfach, so etwas wie dies funktionieren könnte:
Gibt es zusätzliche Dinge, die Sie tun können, aber das sollte Ihnen den Einstieg.
Es stellt sich heraus, dass das kopieren der Inhalte aus einer Word-Datei zu einem anderen ist sehr Komplex, im Allgemeinen Fall, mit Dinge, wie die Vereinbarkeit von Stilen präsentieren in der Quelle Dokument, das möglicherweise in Konflikt in der Ziel-Dokument zum Beispiel. Es ist also nicht eine Funktion, die wir wahrscheinlich werden, indem in das nächste Jahr, sagen.
wird es kopieren Sie die Tabellen auch? @scanny
Nein. Finden Sie auf dieser Seite einige Diskussionen in Bezug auf: github.com/python-openxml/python-docx/issues/40
mir ist es gelungen, zu kopieren, alles zu einem neuen docx-Datei, aber alle Formate sind Weg (Fett zum Beispiel). gibt es eine Möglichkeit, Sie zu halten?
Naja, wie ich schon sagte, die Lösung des Problems im Allgemeinen Fall Komplex. Sie könnten wahrscheinlich machen einige Fortschritte, indem Sie unten auf die run-level und passende Fett und Kursiv es. Jeder Absatz besteht aus läuft (in Erster Annäherung) und die Zeichenformatierung lebt in der run-level.
InformationsquelleAutor scanny
Ich hab eingestellt das Beispiel oben mit der neuesten version von python-docx (0.8.6 zum Zeitpunkt des Schreibens). Beachten Sie, dass dies nur die Kopien der Elemente (Fusion Stile von Elementen ist mehr kompliziert zu machen):
Ja, aber immer noch relevant 🙂
Dies war sehr nützlich, danke. In meinem Fall hatte ich eine Menge von custom-styling zu behandeln (aber das war die gleiche für alle Dokumente) so fand es einfacher zu verwenden ist das erste Dokument in der Liste als
merged_document
und dann fügen Sie alle anderen, um es. So gibt es keine Konflikte im styling mit der Standard-Vorlage, wasDocument()
standardmäßig verwendet.InformationsquelleAutor Martijn Jacobs
Wenn Sie nur brauchen, um zu kombinieren einfache Dokumente mit text, können Sie die Verwendung von python-docx, wie oben erwähnt.
Wenn Sie brauchen, um Zusammenführen von Dokumenten mit hyperlinks, Bilder, Listen, bullet-points etc. Sie können dies durch die Verwendung von lxml zu kombinieren Dokument und alle referenzierten Dateien, wie:
etc.
InformationsquelleAutor yunshi
Erstellen Sie ein leeres Dokument (empty.docx) und fügen Sie Ihre beiden Dokumente.
Bei jedem Durchlauf der iteration über die Dateien, fügen Sie einen Seitenumbruch ein, wenn nötig.
Nach Abschluss speichern Sie die neue Datei enthält zwei Dateien kombiniert.
ist "privat" und sollte nicht zugegriffen werden, da API. In jedem Fall ist diese version/Implementierung abhängig. E. g. verschwunden sein könnte mit Python ist3. Versuchen Sie, Martijn Jacobs' Lösung. Das sieht sehr ähnlich, aber nicht mit privaten Mitgliedern. Ich habe gerade versucht und es funktionierte (Python 3.5.3).
InformationsquelleAutor John Paul Hayes
Alternative Methode zum Zusammenführen von zwei Dokumenten inklusive aller Formatvorlagen ist die Verwendung von python-Bibliothek docxcompose ( https://pypi.org/project/docxcompose/) . Wir müssen Sie nicht explizit definieren das styling und wir nicht haben, um das Dokument Lesen Abschnitt für Abschnitt und hängen Sie an das master-Dokument. Die Verwendung des python-docxcompose ist in der folgenden code
Wenn Sie wollen Zusammenführen mehrerer Dokumente in eine docx-Datei, die Sie verwenden können, thw unter Funktion
InformationsquelleAutor Shashank Shekhar Shukla
Dies ist alles sehr nützlich. Ich kombinierte die Antworten von Martijn Jacobs und Herrn Kriss.
if filnr < len(input_files)-1:
- Klausel, wenn Sie sich bewegenmerged_document.add_page_break()
zu Beginn deselse
Baum. Dann wirst du einen Seitenumbruch einfügen, bevor jedes Dokument außer der ersten.InformationsquelleAutor MZA