4 Stimmen

Wie: Erstellen von .doc-Dateien mit Vorlagen mit django/python

Ich schreibe eine Django-Anwendung und es gibt etwas, das ich nicht weiß, wie zu tun. Nehmen wir an, Sie haben eine Datenbank mit Benutzern und mehrere .doc-Dateien, die Sie an diese Benutzer senden möchten (postalische Briefe, nicht elektronisch). Ich frage mich, ob es eine Möglichkeit gibt, diese Briefe automatisch aus Vorlagen zu erstellen, indem ich meine Benutzerdatenbank verwende, um einige Markierungen einzutragen? (z.B. Name, Adresse, etc.)

Ich habe schon von der Python-Bibliothek "pod" gehört, sie aber noch nie benutzt. Die Dokumentation scheint zu sagen, dass man Openoffice-Vorlagen verwenden soll, aber meine sind im MS-Word-Format. Da sie oft von Leuten aktualisiert werden, die nur MS Office verwenden, bin ich aufgeschmissen.

Für jede Hilfe wären wir dankbar.

J.

4voto

Katriel Punkte 115208

Es gibt viele verschiedene Möglichkeiten, dies zu tun, je nach dem Kontext. Hier sind einige Ideen in absteigender Reihenfolge der Schwierigkeit.

  • Microsoft Word verfügt über eine entsprechende Funktion, die Seriendruck . Sie können Word von Python aus mit COM-Hooks steuern, indem Sie Folgendes installieren pywin32 . Dies würde genau dasselbe bewirken wie das Aufrufen des Serienbriefs durch Öffnen von Microsoft Word. Dies müsste auf einem Windows-Computer mit installiertem Office erfolgen, wahrscheinlich nicht auf Ihrem Server. Siehe http://bytes.com/topic/python/answers/165364-ms-word-mail-merge-automation oder Google "python mail merge".

  • OpenOffice verwendet Python als Makrosprache (glaube ich) und stellt eine API zur Verfügung, die Python-UNO . Sie könnten OpenOffice veranlassen, die Dateien in sein Format zu konvertieren, und dann mit pod um den Seriendruck durchzuführen.

  • Sie könnten Ihre Benutzer auffordern, Ihnen die Daten in einem besseren Format zu liefern, z. B. als OpenOffice-Vorlagen.

  • Sie können die Daten der Benutzer exportieren von Django, geben Sie es den Leuten, die die Vorlagen schreiben, und sagen Sie ihnen, sie sollen ihren eigenen Seriendruck machen.

Wie auch immer Sie sich entscheiden, es wird nicht einfach sein.

0voto

M.R.VaaN Punkte 27

Die Verwendung von Serienbriefen ist einfach und Sie können die Vorlage in einem Word-Dokument ändern.

http://pbpython.com/python-word-template.html

Sie können Serienbriefe auch in eine Ansicht einbinden. Hier ein Beispiel: my_template1 ist meine Word-Dokumentvorlage, die Felder Name und Titel enthält.

def TestDocument2(request):
    template = os.path.join(os.path.dirname(__file__), 
    'templates/my_template1.docx')  

    document = MailMerge(template)
    document.merge(name='testcoy',
               title = 'My title',
               )
    f = io.BytesIO()
    document.write(f)
    length = f.tell()
    f.seek(0)
    response = HttpResponse(
        f.getvalue(),
        content_type='application/vnd.openxmlformats-
        officedocument.wordprocessingml.document'
         )
    response['Content-Disposition'] = 'attachment; filename=example.docx'
    response['Content-Length'] = length
    return response

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X