web-dev-qa-db-fra.com

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

Je voudrais créer un document Word en utilisant Python, cependant, je veux réutiliser autant de mon code de création de document existant que possible. J'utilise actuellement un XSLT pour générer un fichier HTML que je convertir par programmation en un fichier PDF. Cependant, mon client demande maintenant que le même document soit mis à disposition au format Word (.doc).

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

REMARQUE: toutes les solutions possibles doivent s'exécuter sur Linux. Je crois que cela élimine pywin32.

41
Huuuze

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

ÉDITER:

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

À l'aide de 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 y a maintenant un pur Python projet python-docx qui a l'air sympa (je ne l'ai pas utilisé).

36
codeape

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

25
mbk

1) Si vous voulez simplement coller une autre étape à la fin de votre pipeline actuel, il existe maintenant plusieurs options pour convertir les fichiers PDF en fichiers Word. Je n'ai pas essayé 123PDFConverter , mais les éditeurs CNET le recommandent (même lien); il dispose d'un essai gratuit; et il prend en charge l'automatisation. Comme avec tout convertisseur de fichiers tiers, votre kilométrage peut varier, selon la complexité de vos PDF, et la qualité réelle du logiciel.

2) En s'appuyant sur la suggestion d'automatisation COM de codeape, si vous automatisez COM, vous pouvez ouvrir votre fichier HTML réel dans Word et appeler la commande "Enregistrer sous" pour l'enregistrer en tant que fichier DOC .

2
Kevin Crumley

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

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

2
Q R

Pouvez-vous écrire en tant que fichiers XML WordML et le compresser au format .docx? Tout ce dont votre client aurait besoin est le filtre Word 2007 s'il n'est pas déjà sur Office 2007.

Il existe de nombreux exemples.

Vous pouvez également charger XML directement dans Word, à partir de 2003, ou donc on m'a dit .

0
lavinio