49 votes

Comment puis-je créer un document Word en utilisant Python ?

J'aimerais créer un document Word à l'aide de Python, mais je veux réutiliser autant que possible mon code de création de documents existant. J'utilise actuellement un XSLT pour générer un fichier HTML que je convertir par programme à un fichier PDF. Cependant, mon client demande maintenant que le même document soit disponible en format Word (.doc).

Jusqu'à présent, je n'ai pas eu beaucoup de chance de trouver des solutions à ce problème. Quelqu'un connaît-il une bibliothèque open source (ou *gulp* une solution propriétaire) qui pourrait aider à résoudre ce problème ?

NOTE : Toutes les solutions possibles doivent fonctionner sous Linux. Je crois que cela élimine pywin32.

39voto

codeape Points 38576

Vous pouvez créer des documents Word à l'aide de Python de plusieurs façons :

EDIT :

Puisque COM est hors de question, je suggère ce qui suit (inspiré par la réponse de @kcrumley) :

En utilisant la bibliothèque UNO pour automatiser Open Office à partir de python, ouvrez le fichier HTML dans OOWriter, puis enregistrez-le au format .doc.

EDIT2 :

Il existe maintenant un pur Python Projet python-docx qui a l'air bien (je ne l'ai pas utilisé).

0 votes

Wow, vous avez frappé 2 des 3 mêmes idées que j'allais dire (COM et RTF). Merci de m'avoir fait gagner du temps :)

8 votes

+1 pour avoir suggéré .RTF au lieu de .DOC

0 votes

Malheureusement, le format .doc est requis. Pas de RTF.

35voto

mbk Points 163

J'ai essayé python-docx avec succès, il vous permet de créer et d'éditer des docx dans Python.

13 votes

Pour attirer davantage l'attention lorsque vous répondez à une question, il pourrait être intéressant d'inclure un exemple de code, même s'il ne s'agit que du lien que vous avez fourni.

0 votes

@mbk Je n'ai pas trouvé de tutoriel pour créer un document avec cette bibliothèque.

1 votes

@Volatil3 Il y a un exemple sur la page, voici un direct lien

2voto

kcrumley Points 2495

1) Si vous souhaitez simplement ajouter une nouvelle étape à votre chaîne de production actuelle, il existe aujourd'hui plusieurs options pour convertir des fichiers PDF en fichiers Word. Je n'ai pas essayé 123PDFConverter mais les rédacteurs de CNET le recommandent (même lien), il est disponible en version d'essai gratuite et il prend en charge l'automatisation. Comme pour tout convertisseur de fichiers tiers, votre expérience peut varier, en fonction de la complexité de vos PDF et de la qualité du logiciel.

2) En suivant la suggestion de codeape concernant l'automatisation COM, si vous automatisez Word, vous pouvez ouvrir votre fichier HTML dans Word et appeler la commande "Enregistrer sous" pour l'enregistrer en tant que fichier DOC.

2voto

J'ai dû faire quelque chose de similaire avec python également. Il est loin plus de travail manuel que je ne le souhaite, mais les documents créés avec pyRTF faisaient planter Word et OpenOffice et je n'avais pas la motivation pour essayer de comprendre.

J'ai trouvé le plus simple (mais pas idéal) de créer un modèle de document Word avec les styles que je veux. Ensuite, mon Python crée un fichier HTML dont le format <p> sont étiquetés après les styles Word. Ensuite, j'ouvre le fichier HTML dans Word et j'ouvre le modèle dans Word. Je coupe et colle tout le texte du fichier HTML dans le modèle, et Word le reformate en fonction des styles que j'avais définis précédemment. Cela fonctionne pour le fichier occasionnel dans ma situation. Cela peut ne pas fonctionner dans votre cas. POUR VOTRE INFORMATION.

0voto

lavinio Points 12592

Pouvez-vous l'écrire sous forme de fichiers XML WordML et le compresser au format .docx ? Votre client n'aurait besoin que du filtre Word 2007 s'il n'est pas déjà sous Office 2007.

Il existe de nombreux exemples.

Vous pouvez également charger le XML directement dans Word, à partir de 2003, ou encore c'est ce qu'on m'a dit .

0 votes

Malheureusement, cette option n'est pas idéale. D'après ce que je sais, je devrais convertir mes données en WordML pour conserver le formatage du document.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X