2009-06-23 60 views
35

Mi piacerebbe creare un documento Word usando Python, tuttavia, voglio riutilizzare il più possibile il mio codice di creazione del documento esistente. Attualmente sto usando un XSLT per generare un file HTML che ho programatically convert in un file PDF. Tuttavia, il mio cliente ora richiede che lo stesso documento sia reso disponibile in formato Word (.doc).Come posso creare un documento Word usando Python?

Finora, non ho avuto molta fortuna a trovare soluzioni a questo problema. Qualcuno è a conoscenza di una libreria open source (o * gulp * una soluzione proprietaria) che può aiutare a risolvere questo problema?

NOTA: tutte le soluzioni possibili devono essere eseguite su Linux. Credo che questo elimina pywin32.

risposta

36

un paio di modi è possibile creare documenti di Word utilizzando Python:

EDIT:

Dal COM è fuori questione, suggerisco il seguente (ispirato alla risposta di @ kcrumley):

Utilizzando la libreria UNO per automatizzare Open Office da python, aprire il file HTML in OOWriter, quindi salvare come .doc.

EDIT2:

V'è ora un Python puro python-docx project che sembra piacevole (io non l'ho usato).

+0

Wow, hai colpito 2 delle stesse 3 idee che stavo per dire (COM e RTF). Grazie per avermi salvato il tempo. :) –

+8

+1 per suggerire .RTF invece di .DOC – Hardwareguy

+0

Sfortunatamente, è richiesto .doc. Nessun RTF. – Huuuze

0

È possibile scrivere come file XML WordML e comprimerlo nel formato .docx? Tutto il tuo client avrebbe bisogno è il filtro Word 2007 se non sono già su Office 2007.

Ci sono molti esempi là fuori.

È inoltre possibile caricare XML direttamente in Word, a partire dal 2003 o so I've been told.

+0

Purtroppo, questa opzione non è l'ideale. Da quello che posso dire, avrei bisogno di convertire i miei dati in WordML per mantenere la formattazione del documento. – Huuuze

2

1) Se si desidera semplicemente passare un altro passaggio alla fine della pipeline corrente, ci sono diverse opzioni disponibili per la conversione di file PDF in file Word. Non ho provato 123PDFConverter, ma gli editori CNET lo raccomandano (stesso link); ha una prova gratuita; e supporta l'automazione. Come con qualsiasi convertitore di file di terze parti, il tuo chilometraggio può variare, a seconda di quanto sono complicati i tuoi PDF e quanto è buono il software effettivamente.

2) Basandosi sul suggerimento di automazione COM di codeape, se si COM automatizza Word, è possibile aprire il file HTML effettivo in Word e chiamare il comando "Salva con nome" per salvarlo come file DOC.

2

Ho dovuto fare qualcosa di simile anche con python. È lontano più lavoro manuale di quello che voglio, ma i documenti creati con pyRTF stavano causando l'arresto di Word e OpenOffice e non avevo la motivazione per cercare di capirlo.

Ho trovato più semplice (ma non ideale) creare un modello di documento Word con gli stili desiderati.Quindi il mio Python crea un file HTML i cui stili <p> sono etichettati dopo gli stili di Word. Quindi apro il file HTML in Word e apro il modello in Word. Ho tagliato e incollato tutto il testo dal file HTML nel modello e Word riformatta tutto in base agli stili che avevo impostato in precedenza. Funziona per il file occasionale nella mia situazione. Potrebbe non funzionare per la tua situazione. FYI.

20

ho cercato python-docx con successo, vi permette di creare e modificare docx all'interno di Python

+8

Per ottenere più attenzione quando si risponde a una domanda, potrebbe essere una buona idea includere un codice di esempio, anche se è collegato solo dal collegamento fornito. –

+0

@mbk Non ho trovato tutorial per creare un documento con questa libreria – Volatil3

+1

@ Volatil3 C'è un esempio nella pagina, qui c'è un collegamento diretto [link] (https://github.com/mikemaccana/python-docx/blob/ master/example-makedocument.py) – mbk

Problemi correlati