MailMergeCleanupOptions

MailMergeCleanupOptions enumeration

Especifica opciones que determinan qué elementos se eliminan durante la combinación de correspondencia.

[Flags]
public enum MailMergeCleanupOptions

Valores

Nombre Valor Descripción
None 0 Especifica un valor predeterminado.
RemoveEmptyParagraphs 1 Especifica si los párrafos que contenían campos de combinación de correspondencia sin datos deben eliminarse del documento. Cuando se establece esta opción, también se eliminan los párrafos que contienen campos de combinación de inicio y final de región que de otro modo estarían vacíos .
RemoveUnusedRegions 2 Especifica si las regiones de combinación de correspondencia no utilizadas deben eliminarse del documento.
RemoveUnusedFields 4 Especifica si los campos de combinación no utilizados deben eliminarse del documento.
RemoveContainingFields 8 Especifica si los campos que contienen campos de combinación (por ejemplo, IF) deben eliminarse del documento si se eliminan los campos de combinación anidados.
RemoveStaticFields 10 Especifica si los campos estáticos deben eliminarse del documento. Los campos estáticos son campos cuyos resultados siguen siendo los mismos ante cualquier cambio en el documento. Los campos, que no almacenan sus resultados en un documento y se calculan sobre la marcha (comoFieldListNum , FieldSymbol , etc.) no se consideran estáticos.
RemoveEmptyTableRows 20 Especifica si las filas vacías que contienen regiones de combinación de correspondencia deben eliminarse del documento.

Ejemplos

Muestra cómo eliminar los párrafos vacíos que una combinación de correspondencia puede crear a partir del documento de salida combinado.

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

builder.InsertField(" MERGEFIELD TableStart:MyTable");
builder.InsertField(" MERGEFIELD FirstName ");
builder.Write(" ");
builder.InsertField(" MERGEFIELD LastName ");
builder.InsertField(" MERGEFIELD TableEnd:MyTable");

DataTable dataTable = new DataTable("MyTable");
dataTable.Columns.Add("FirstName");
dataTable.Columns.Add("LastName");
dataTable.Rows.Add(new object[] { "John", "Doe" });
dataTable.Rows.Add(new object[] { "", "" });
dataTable.Rows.Add(new object[] { "Jane", "Doe" });

doc.MailMerge.CleanupOptions = mailMergeCleanupOptions;
doc.MailMerge.ExecuteWithRegions(dataTable);

if (doc.MailMerge.CleanupOptions == MailMergeCleanupOptions.RemoveEmptyParagraphs) 
    Assert.AreEqual(
        "John Doe\r" +
        "Jane Doe", doc.GetText().Trim());
else
    Assert.AreEqual(
        "John Doe\r" +
        " \r" +
        "Jane Doe", doc.GetText().Trim());

Muestra cómo eliminar automáticamente los MERGEFIELD que no se utilizan durante la combinación de correspondencia.

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Cree un documento con MERGEFIELDs para tres columnas de una tabla de fuente de datos de combinación de correspondencia,
// y luego crea una tabla con solo dos columnas cuyos nombres coincidan con nuestros MERGEFIELD.
builder.InsertField(" MERGEFIELD FirstName ");
builder.Write(" ");
builder.InsertField(" MERGEFIELD LastName ");
builder.InsertParagraph();
builder.InsertField(" MERGEFIELD City ");

DataTable dataTable = new DataTable("MyTable");
dataTable.Columns.Add("FirstName");
dataTable.Columns.Add("LastName");
dataTable.Rows.Add(new object[] { "John", "Doe" });
dataTable.Rows.Add(new object[] { "Joe", "Bloggs" });

// Nuestro tercer MERGEFIELD hace referencia a una columna "Ciudad", que no existe en nuestra fuente de datos.
// La combinación de correspondencia dejará campos como este intactos en su estado anterior a la combinación.
// Establecer la propiedad "CleanupOptions" en "RemoveUnusedFields" eliminará cualquier MERGEFIELD
// que no se utilizan durante una combinación de correspondencia para limpiar los documentos combinados.
doc.MailMerge.CleanupOptions = mailMergeCleanupOptions;
doc.MailMerge.Execute(dataTable);

if (mailMergeCleanupOptions == MailMergeCleanupOptions.RemoveUnusedFields || 
    mailMergeCleanupOptions == MailMergeCleanupOptions.RemoveStaticFields)
    Assert.AreEqual(0, doc.Range.Fields.Count);
else
    Assert.AreEqual(2, doc.Range.Fields.Count);

Ver también