Python genera un documento de Word a partir de una plantilla

¿Está buscando una manera de crear documentos de Word a partir de plantillas? ¡Has venido al lugar correcto! En esta publicación de blog, exploraremos la mejor solución para generar documentos de Word a partir de plantillas utilizando diferentes tipos de fuentes de datos en Python. Aprenda a aprovechar las plantillas predefinidas para generar documentos de Word en formato DOCX completando marcadores de posición utilizando varias fuentes de datos, como XML, JSON o CSV.

Este artículo cubre los siguientes temas:

  1. Biblioteca Python para generar documentos de Word a partir de plantillas
  2. Crear documentos de Word a partir de una plantilla utilizando datos XML
  3. Generar documentos de Word a partir de una plantilla utilizando datos JSON
  4. Generar documentos de Word con datos CSV en Python
  5. Motor de informes Python LINQ
  6. Recursos gratuitos

Biblioteca Python para generar documentos de Word a partir de plantillas

Usaremos la API LINQ Reporting Engine de Aspose.Words for Python para generar documentos de Word a partir de plantillas. Este motor admite diferentes etiquetas para texto, imágenes, listas, tablas, hipervínculos y marcadores. Completamos documentos de Word que incluyen estas etiquetas y los completamos con datos de fuentes de datos XML, JSON o CSV. Entonces, comencemos a generar los documentos de Word a partir de las plantillas usando Python.

Instalación de Aspose.Words for Python

Puede descargar el paquete o instalar la API desde PyPI usando el siguiente comando pip en la consola:

> pip install aspose-words

Cree documentos de Word a partir de una plantilla utilizando datos XML en Python

Para generar el documento de Word a partir de una plantilla utilizando la fuente de datos XML, necesitamos un archivo de plantilla y datos de origen XML. Crearemos un documento de Word (DOC/DOCX) con los siguientes marcadores de posición como contenido del documento de plantilla:

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

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

Aquí está la fuente de datos XML que usaremos en este ejemplo:

<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>

Ahora podemos generar fácilmente un documento de Word a partir de una fuente de datos XML siguiendo los pasos a continuación:

  1. Cargue el archivo de plantilla de Word usando la clase Document.
  2. Cree una instancia de la clase XmlDataSource e inicialícela con la ruta del archivo XML.
  3. Crear una instancia de la clase ReportingEngine.
  4. Llame al método ReportingEngine.BuildReport() con la plantilla, la fuente de datos y el nombre de la fuente de datos.
  5. Guarde el documento de Word generado utilizando el método Document.Save().

El siguiente ejemplo de código muestra cómo generar un documento de Word a partir de una fuente de datos XML en Python.

# Este ejemplo de código demuestra cómo generar un documento de Word a partir de una plantilla utilizando una fuente de datos XML.
# Cargar la plantilla
doc = aw.Document("D:\\Files\\template.docx")

# Cargar la fuente de datos
data_source = aw.reporting.XmlDataSource("D:\\Files\\data-source.xml")

# Inicializar motor de informes
engine = aw.reporting.ReportingEngine()
engine.build_report(doc, data_source, "persons");

# guardar el documento
doc.save("D:\\Files\\WordFromXML.docx")

Producción

Genere documentos de Word a partir de una plantilla utilizando datos XML en Python

Genere documentos de Word a partir de una plantilla utilizando datos JSON en Python

Para generar un documento de Word utilizando una fuente de datos JSON, usaremos la siguiente plantilla de Word:

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

La siguiente sería la fuente de datos JSON que usaremos para completar la plantilla:

[
   {
       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
           }
       ]
   },
]

Podemos generar fácilmente el documento de Word a partir de una fuente de datos JSON siguiendo los pasos mencionados anteriormente. Sin embargo, usaremos la clase JsonDataSource para cargar y usar la fuente de datos JSON en el paso 2.

El siguiente ejemplo de código muestra cómo generar un documento de Word a partir de la plantilla usando JSON en Python.

# Este ejemplo de código demuestra cómo generar un documento de Word a partir de una plantilla utilizando una fuente de datos JSON.
# Cargar la plantilla
doc = aw.Document("D:\\Files\\template-json.docx")

# Cargar la fuente de datos
data_source = aw.reporting.JsonDataSource("D:\\Files\\data-source.json")

# Inicializar motor de informes
engine = aw.reporting.ReportingEngine()
engine.build_report(doc, data_source, "managers");

# guardar el documento
doc.save("D:\\Files\\WordFromJSON.docx")

Producción

Genere documentos de Word a partir de una plantilla utilizando datos JSON en Python

Genere documentos de Word con datos CSV en Python

Para generar el documento de Word desde CSV, usaremos la siguiente plantilla de Word:

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

La plantilla se completará con los siguientes datos CSV:

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

Ahora podemos generar el documento de Word a partir de la fuente de datos CSV siguiendo los pasos mencionados anteriormente. Sin embargo, usaremos la clase CsvDataSource para cargar y usar la fuente de datos CSV en el paso 2.

El siguiente ejemplo de código muestra cómo generar un documento de Word a partir de una fuente de datos CSV en Python.

# Este ejemplo de código demuestra cómo generar un documento de Word a partir de una plantilla utilizando una fuente de datos JSON.
# Cargar la plantilla
doc = aw.Document("D:\\Files\\template-csv.docx")

# Cargar la fuente de datos
data_source = aw.reporting.CsvDataSource("D:\\Files\\data-source.csv")

# Inicializar motor de informes
engine = aw.reporting.ReportingEngine()
engine.build_report(doc, data_source, "persons");

# guardar el documento
doc.save("D:\\Files\\WordFromCSV.docx")

Producción

Genere documentos de Word con datos CSV en Python

Obtenga una licencia gratuita

Puede obtener una licencia temporal gratuita y generar documentos de Word sin limitaciones de evaluación.

Motor de informes Python LINQ - Leer más

LINQ Reporting Engine admite una amplia gama de etiquetas para generar dinámicamente documentos de Word con todas las funciones en Python. Puede leer más sobre estas etiquetas, junto con su sintaxis, en este artículo.

Python genera un documento de Word a partir de una plantilla – Recursos gratuitos

Además de generar documentos de Word a partir de plantillas, obtenga más información sobre cómo crear, manipular y convertir documentos de Word y explore otras características de la biblioteca utilizando los recursos a continuación:

Conclusión

En este artículo, hemos aprendido cómo generar documentos de Word a partir de plantillas en Python. También hemos visto cómo utilizar fuentes de datos XML, JSON y CSV para generar documentos de Word. Al aprovechar Aspose.Words for Python LINQ Reporting Engine, puede generar fácilmente varios tipos de documentos de Word. En caso de cualquier ambigüedad, no dude en contactarnos en nuestro foro de soporte gratuito.

Artículos relacionados