MailMergeCleanupOptions

MailMergeCleanupOptions enumeration

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

[Flags]
public enum MailMergeCleanupOptions

Valores

NombreValorDescripción
None0Especifica un valor predeterminado.
RemoveEmptyParagraphs1Especifica si los párrafos que contienen 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 correspondencia de inicio y fin de región que, de otro modo, estarían vacíos .
RemoveUnusedRegions2Especifica si las regiones de combinación de correspondencia no utilizadas deben eliminarse del documento.
RemoveUnusedFields4Especifica si los campos de combinación no utilizados deben eliminarse del documento.
RemoveContainingFields8Especifica 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.
RemoveStaticFields10Especifica 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. Campos que no almacenan sus resultados en un documento y se calculan sobre la marcha (comoFieldListNum , FieldSymbol , etc.) no se consideran estáticos.
RemoveEmptyTableRows20Especifica si las filas vacías que contienen regiones de combinación de correspondencia deben eliminarse del documento.

Ejemplos

Muestra cómo eliminar párrafos vacíos que una combinación de correspondencia puede crear desde el documento de salida de la combinación.

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

// Crea un documento con MERGEFIELD para tres columnas de una tabla de origen 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 previo 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