Automatizar la creación de documentos personalizados, como informes, cartas y facturas, puede mejorar significativamente la eficiencia en su flujo de trabajo. Con C# Mail Merge impulsado por Aspose.Words for .NET, puede lograr esto sin problemas. Esta guía lo guiará a través del uso del Aspose.Words Mail Merge Plugin para realizar una generación de documentos eficiente y escalable dentro de sus aplicaciones .NET, sin necesidad de MS Word o Office Interop. Al final de esta guía, estará equipado para integrar C# mail merge para la automatización de informes y optimizar su flujo de trabajo de informes.
Contenidos
- ¿Qué es Mail Merge?
- Fuentes de datos para Mail Merge
- Preparando plantillas para Mail Merge
- Comenzando con Aspose.Words para .NET
- Realizar Mail Merge con datos de muestra
- Mail Merge con datos XML
- Formato personalizado de campos de combinación
- Mail Merge con regiones
- Mail Merge anidado
- Conclusión
¿Qué es Mail Merge?
Mail Merge es una poderosa metodología para generar documentos dinámicamente al llenar plantillas con datos de diversas fuentes. Con Aspose.Words, puede automatizar tareas como:
- Generar cartas y facturas personalizadas.
- Crear informes masivos utilizando formatos estructurados como XML, JSON o bases de datos, permitiendo generación dinámica de informes con C# y Aspose.Words.
Fuentes de datos para Mail Merge
Aspose.Words admite una variedad de fuentes de datos, incluyendo:
- Objetos: Llenar plantillas utilizando instancias de clase.
- XML: Cargar datos estructurados para campos dinámicos.
- JSON: Integrarse fácilmente con API modernas.
- CSV: Aprovechar datos tabulares para la generación masiva de documentos.
- DataTable/DataSet: Utilizar ADO.NET para la integración de bases de datos.
Preparando plantilla para Mail Merge
La plantilla de mail merge es el documento que contiene campos de combinación que se llenarán con datos de su fuente de datos especificada durante la ejecución. La plantilla puede estar en formato DOC o DOCX y no requiere un estilo específico. Siga estos pasos para crear una plantilla de mail merge:
- Abra su documento o cree uno nuevo en MS Word.
- Coloque el cursor donde desea insertar un campo de combinación.
- Desde el menú Insertar, seleccione la opción Campo.
- Desde la lista de Nombres de campo, seleccione MergeField.
- Especifique un nombre para el campo de combinación en el cuadro Nombre del campo y haga clic en Aceptar.
- Guarde el documento.
La siguiente captura de pantalla ilustra un ejemplo de plantilla documento.

.NET Mail Merge API - Instalación
Puede instalar Aspose.Words for .NET a través de varios métodos:
Realizar Mail Merge en documento de Word usando C#
Una vez que su plantilla esté lista, puede ejecutar el mail merge para generar documentos. Aquí están los pasos para realizar mail merge en su plantilla preparada:
- Cargue el documento de plantilla utilizando la clase Document.
- Establezca las opciones de mail merge requeridas, como Document.MailMerge.TrimWhitespaces.
- Ejecute el mail merge utilizando el método Document.MailMerge.Execute(), pasando la fuente de datos como parámetro.
- Guarde el documento generado utilizando el método Document.Save(String).
Aquí hay un ejemplo de código que demuestra cómo automatizar la generación de informes en C# utilizando un array de valores:
Documento de Word después de Mail Merge

Realizar Mail Merge usando fuente de datos XML en C#
Los archivos XML son comúnmente utilizados para almacenar y transferir datos. Aspose.Words for .NET admite XML como fuente de datos para operaciones de mail merge. Simplemente lea el XML en un objeto DataSet y ejecute el mail merge. A continuación se muestra un archivo XML de ejemplo para nuestro caso de uso.
<customers>
<customer Name="John Ben Jan" ID="1" Domain="History" City="Boston"/>
<customer Name="Lisa Lane" ID="2" Domain="Chemistry" City="LA"/>
<customer Name="Dagomir Zits" ID="3" Domain="Heraldry" City="Milwaukee"/>
<customer Name="Sara Careira Santy" ID="4" Domain="IT" City="Miami"/>
</customers>
El siguiente ejemplo de código recupera datos de una fuente de datos XML y ejecuta el mail merge utilizando C#.
A continuación se muestra la plantilla de mail merge que se llenará con datos del archivo XML.

Esta imagen representa la primera página del documento de Word resultante obtenido después de ejecutar el mail merge.

Formato personalizado de campos de combinación
Aspose.Words for .NET proporciona un control mejorado sobre el proceso de mail merge. La propiedad MailMerge.FieldMergingCallback le permite configurar el comportamiento del mail merge a medida que se encuentra cada campo de combinación. Implementar los métodos IFieldMergingCallback.FieldMerging y IFieldMergingCallback.ImageFieldMerging permite personalizar la operación de mail merge.
A continuación se muestra un ejemplo de código que demuestra cómo aplicar un formato personalizado durante el mail merge a través de la plantilla de ejemplo proporcionada:
Lo siguiente implementa la clase HandleMergeFieldAlternatingRows.
Mail Merge con regiones usando C#
En algunos casos, puede ser necesario llenar y repetir una región específica dentro del documento de Word. Para tales escenarios, utilice mail merge con regiones. Para crear una región, especifique tanto el inicio como el final de la región; el mail merge repetirá esta región para cada registro en la fuente de datos. El ejemplo de plantilla a continuación contiene dos regiones: Pedidos y Detalles del Pedido, utilizando los campos de combinación «TableStart:Orders», «TableEnd:Orders», «TableStart:OrderDetails» y «TableEnd:OrderDetails».

Aquí hay un ejemplo de código que ejecuta mail merge basado en regiones para la plantilla mencionada anteriormente.
Los siguientes métodos ilustran cómo leer datos de una base de datos.
Mail Merge anidado
A menudo, los datos de la fuente están estructurados en formatos relacionales. Por ejemplo, “Pedidos” puede tener una relación de uno a muchos con “Detalles del Pedido”, que mantiene registros de los artículos dentro de un pedido. En tales escenarios, utilice mail merge anidado. A continuación se muestra una plantilla de factura que se adapta bien a este escenario.

La siguiente es una fuente de datos XML para nuestro ejemplo de mail merge anidado.
<?xml version="1.0" encoding ="utf-8"?>
<Orders xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="OrdersSchema.xsd">
<Order>
<Number>23</Number>
<Address>Nelson Street</Address>
<Suburb>Howick</Suburb>
<City>Auckland</City>
<Phonenumber>543 1234</Phonenumber>
<Date>03/01/2010</Date>
<Total>14.00</Total>
<Item>
<Name>BBQ Chicken Pizza</Name>
<Price>6.00</Price>
<Quantity>1</Quantity>
<ItemTotal>6.00</ItemTotal>
</Item>
<Item>
<Name>1.5 Litre Coke</Name>
<Price>4.00</Price>
<Quantity>2</Quantity>
<ItemTotal>8.00</ItemTotal>
</Item>
</Order>
<Order>
<Number>10</Number>
<Address>Parkville Avenue</Address>
<Suburb>Pakuranga</Suburb>
<City>Auckland</City>
<Phonenumber>548 7342</Phonenumber>
<Date>05/03/2010</Date>
<Total>6.00</Total>
<Item>
<Name>Hawaiian Pizza</Name>
<Price>4.00</Price>
<Quantity>1</Quantity>
<ItemTotal>4.00</ItemTotal>
</Item>
<Item>
<Name>Fries</Name>
<Price>1.00</Price>
<Quantity>2</Quantity>
<ItemTotal>2.00</ItemTotal>
</Item>
</Order>
</Orders>
El correspondiente archivo OrderSchema.xsd para este XML es:
<?xml version="1.0" encoding ="utf-8"?>
<xs:schema id="OrdersSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Orders">
<xs:complexType>
<xs:sequence>
<xs:element name="Order">
<xs:complexType>
<xs:sequence>
<xs:element name="Number"/>
<xs:element name="Address"/>
<xs:element name="Suburb"/>
<xs:element name="City"/>
<xs:element name="Phonenumber"/>
<xs:element name="Date"/>
<xs:element name="Total"/>
<xs:element name="Item">
<xs:complexType>
<xs:sequence>
<xs:element name="Name"/>
<xs:element name="Price"/>
<xs:element name="Quantity"/>
<xs:element name="ItemTotal"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
El siguiente ejemplo de código ejecuta el mail merge anidado utilizando C#.
Documento de Word después de Mail Merge
A continuación se muestra la primera página del documento de Word resultante obtenido después de ejecutar el mail merge anidado.

Conclusión
Aspose.Words for .NET es una API de mail merge integral que proporciona tanto características estándar como extendidas adecuadas para aplicaciones .NET. Con solo unas pocas líneas de código, puede desarrollar informes simples o complejos a partir de diversas fuentes de datos sin problemas. Para obtener orientación sobre las mejores prácticas de generación de informes automatizados en .NET, consulte la documentación. Para comenzar con Aspose.Words for .NET, explore las guías para desarrolladores y el código de muestra en GitHub. El Aspose Plugin también ofrece funcionalidades avanzadas para la generación de informes.
Pruebe Aspose.Words for .NET de forma gratuita
Puede obtener una licencia temporal gratuita para probar Aspose.Words for .NET sin limitaciones. Obtenga su licencia temporal ahora.