Python Générer un document Word à partir d'un modèle

Cherchez-vous un moyen de créer des documents Word à partir de modèles ? Vous êtes arrivé au bon endroit! Dans cet article de blog, nous explorerons la meilleure solution pour générer des documents Word à partir de modèles utilisant différents types de sources de données en Python. Découvrez comment exploiter des modèles prédéfinis pour générer des documents Word au format DOCX en remplissant des espaces réservés à l’aide de diverses sources de données, telles que XML, JSON ou CSV.

Cet article couvre les sujets suivants :

  1. Bibliothèque Python pour générer des documents Word à partir de modèles
  2. Créer des documents Word à partir d’un modèle à l’aide de données XML
  3. Générer des documents Word à partir d’un modèle à l’aide de données JSON
  4. Générer des documents Word avec des données CSV en Python
  5. Moteur de rapports Python LINQ
  6. Ressources gratuites

Bibliothèque Python pour générer des documents Word à partir de modèles

Nous utiliserons l’API LINQ Reporting Engine de Aspose.Words for the Python pour générer des documents Word à partir de modèles. Ce moteur prend en charge différentes balises pour le texte, les images, les listes, les tableaux, les hyperliens et les signets. Nous remplissons les documents Word contenant ces balises et les remplissons avec des données provenant de sources de données XML, JSON ou CSV. Commençons donc par générer les documents Word à partir des modèles en utilisant Python.

Installation d’Aspose.Words for Python

Vous pouvez télécharger le package ou installer l’API depuis PyPI à l’aide de la commande pip suivante dans la console :

> pip install aspose-words

Créer des documents Word à partir d’un modèle à l’aide de données XML en Python

Pour générer le document Word à partir d’un modèle à l’aide de la source de données XML, nous avons besoin d’un fichier modèle et de données source XML. Nous allons créer un document Word (DOC/DOCX) avec les espaces réservés suivants comme contenu du modèle de document :

Name: <<[Name]>>, Age: <<[Age]>>, Date of Birth:
<<[Birth]:"dd.MM.yyyy">>

Children:
<<foreach [in Child]>><<[Child_Text]>>
<</foreach>>"""

Voici la source de données XML que nous utiliserons dans cet exemple :

<Person>
	<Name>John Doe</Name>
	<Age>30</Age>
	<Birth>1989-04-01 4:00:00 pm</Birth>
	<Child>Ann Doe</Child>
	<Child>Charles Doe</Child>
</Person>

Désormais, nous pouvons facilement générer un document Word à partir d’une source de données XML en suivant les étapes ci-dessous :

  1. Chargez le fichier de modèle Word à l’aide de la classe Document.
  2. Créez une instance de la classe XmlDataSource et initialisez-la avec le chemin du fichier XML.
  3. Instancier la classe ReportingEngine.
  4. Appelez la méthode ReportingEngine.BuildReport() avec le modèle, la source de données et le nom de la source de données.
  5. Enregistrez le document Word généré à l’aide de la méthode Document.Save().

L’exemple de code suivant montre comment générer un document Word à partir d’une source de données XML en Python.

# Cet exemple de code montre comment générer un document Word à partir d'un modèle à l'aide d'une source de données XML.
# Charger le modèle
doc = aw.Document("D:\\Files\\template.docx")

# Charger la source de données
data_source = aw.reporting.XmlDataSource("D:\\Files\\data-source.xml")

# Initialiser le moteur de reporting
engine = aw.reporting.ReportingEngine()
engine.build_report(doc, data_source, "persons");

# Enregistrez le document
doc.save("D:\\Files\\WordFromXML.docx")

Sortir

Générer des documents Word à partir d'un modèle à l'aide de données XML en Python

Générer des documents Word à partir d’un modèle à l’aide de données JSON en Python

Pour générer un document Word à l’aide d’une source de données JSON, nous utiliserons le modèle Word suivant :

<<foreach [in managers]>>Manager: <<[Name]>>
Contracts:
<<foreach [in Contract]>>- <<[Client.Name]>> ($<<[Price]>>)
<</foreach>>
<</foreach>>

Voici la source de données JSON que nous utiliserons pour remplir le modèle :

[
   {
       Name: "John Smith",
       Contract:
       [
           {
               Client:
               {
                   Name: "A Company"
               },
               Price: 1200000
           },
           {
               Client:
               {
                   Name: "B Ltd."
               },
               Price: 750000
           },
           {
               Client:
               {
                   Name: "C & D"
               },
               Price: 350000
           }
       ]
   },
   {
       Name: "Tony Anderson",
       Contract:
       [
           {
               Client:
               {
                   Name: "E Corp."
               },
               Price: 650000
           },
           {
               Client:
               {
                   Name: "F & Partners"
               },
               Price: 550000
           }
       ]
   },
]

Nous pouvons facilement générer le document Word à partir d’une source de données JSON en suivant les étapes mentionnées précédemment. Cependant, nous utiliserons la classe JsonDataSource pour charger et utiliser la source de données JSON à l’étape 2.

L’exemple de code suivant montre comment générer un document Word à partir du modèle à l’aide de JSON en Python.

# Cet exemple de code montre comment générer un document Word à partir d'un modèle à l'aide d'une source de données JSON.
# Charger le modèle
doc = aw.Document("D:\\Files\\template-json.docx")

# Charger la source de données
data_source = aw.reporting.JsonDataSource("D:\\Files\\data-source.json")

# Initialiser le moteur de reporting
engine = aw.reporting.ReportingEngine()
engine.build_report(doc, data_source, "managers");

# Enregistrez le document
doc.save("D:\\Files\\WordFromJSON.docx")

Sortir

Générer des documents Word à partir d'un modèle à l'aide de données JSON en Python

Générer des documents Word avec des données CSV en Python

Pour générer le document Word à partir de CSV, nous utiliserons le modèle Word suivant :

<<foreach [in persons]>>Name: <<[Column1]>>, Age: <<[Column2]>>, Date of Birth: <<[Column3]:"dd.MM.yyyy">>
<</foreach>>
Average age: <<[persons.Average(p => p.Column2)]>>

Le modèle sera renseigné avec les données CSV suivantes :

John Doe,30,1989-04-01 4:00:00 pm
Jane Doe,27,1992-01-31 07:00:00 am
John Smith,51,1968-03-08 1:00:00 pm

Maintenant, nous pouvons générer le document Word à partir de la source de données CSV en suivant les étapes mentionnées précédemment. Cependant, nous utiliserons la classe CsvDataSource pour charger et utiliser la source de données CSV à l’étape 2.

L’exemple de code suivant montre comment générer un document Word à partir d’une source de données CSV en Python.

# Cet exemple de code montre comment générer un document Word à partir d'un modèle à l'aide d'une source de données JSON.
# Charger le modèle
doc = aw.Document("D:\\Files\\template-csv.docx")

# Charger la source de données
data_source = aw.reporting.CsvDataSource("D:\\Files\\data-source.csv")

# Initialiser le moteur de reporting
engine = aw.reporting.ReportingEngine()
engine.build_report(doc, data_source, "persons");

# Enregistrez le document
doc.save("D:\\Files\\WordFromCSV.docx")

Sortir

Générer des documents Word avec des données CSV en Python

Obtenez une licence gratuite

Vous pouvez obtenir une licence temporaire gratuite et générer des documents Word sans limitations d’évaluation.

Moteur de reporting Python LINQ - Lire la suite

Le moteur de reporting LINQ prend en charge une large gamme de balises pour générer dynamiquement des documents Word complets en Python. Vous pouvez en savoir plus sur ces balises, ainsi que sur leur syntaxe, dans cet article.

Python Générer un document Word à partir d’un modèle - Ressources gratuites

En plus de générer des documents Word à partir de modèles, apprenez-en davantage sur la création, la manipulation et la conversion de documents Word, et explorez diverses autres fonctionnalités de la bibliothèque à l’aide des ressources ci-dessous :

Conclusion

Dans cet article, nous avons appris comment générer des documents Word à partir de modèles en Python. Nous avons également vu comment utiliser les sources de données XML, JSON et CSV pour générer des documents Word. En tirant parti d’Aspose.Words for Python LINQ Reporting Engine, vous pouvez facilement générer différents types de documents Word. En cas d’ambiguïté, n’hésitez pas à nous contacter sur notre forum d’assistance gratuit.

Articles Liés