MailMergeCleanupOptions

MailMergeCleanupOptions enumeration

Specifica le opzioni che determinano quali elementi vengono rimossi durante la stampa unione.

[Flags]
public enum MailMergeCleanupOptions

I valori

NomeValoreDescrizione
None0Specifica un valore predefinito.
RemoveEmptyParagraphs1Specifica se i paragrafi che contenevano campi di unione di posta senza dati devono essere rimossi dal documento. Quando questa opzione è impostata, vengono rimossi anche i paragrafi che contengono campi di unione di inizio e fine regione altrimenti vuoti .
RemoveUnusedRegions2Specifica se le aree di unione di posta non utilizzate devono essere rimosse dal documento.
RemoveUnusedFields4Specifica se i campi di unione non utilizzati devono essere rimossi dal documento.
RemoveContainingFields8Specifica se i campi che contengono campi di unione (ad esempio, IF) devono essere rimossi dal documento se i campi di unione nidificati vengono rimossi.
RemoveStaticFields10Specifica se i campi statici devono essere rimossi dal documento. I campi statici sono campi i cui risultati rimangono invariati a ogni modifica del documento. I campi che non memorizzano i risultati in un documento e vengono calcolati al volo (ad esempioFieldListNum , FieldSymbol , ecc.) non sono considerati statici.
RemoveEmptyTableRows20Specifica se le righe vuote che contengono aree di unione di stampa devono essere rimosse dal documento.
RemoveEmptyTables40Specifica se rimuovere dalle tabelle dei documenti che contengono aree di unione di posta che sono state rimosse utilizzando oRemoveUnusedRegions o ilRemoveEmptyTableRows opzione.

Esempi

Mostra come rimuovere un’intera tabella vuota durante la stampa unione.

DataTable tableCustomers = new DataTable("A");
tableCustomers.Columns.Add("CustomerID");
tableCustomers.Columns.Add("CustomerName");
tableCustomers.Rows.Add(new object[] { 1, "John Doe" });
tableCustomers.Rows.Add(new object[] { 2, "Jane Doe" });

DataSet ds = new DataSet();
ds.Tables.Add(tableCustomers);

Document doc = new Document(MyDir + "Mail merge tables.docx");
Assert.AreEqual(2, doc.GetChildNodes(NodeType.Table, true).Count);

doc.MailMerge.MergeDuplicateRegions = false;
doc.MailMerge.CleanupOptions = MailMergeCleanupOptions.RemoveEmptyTables | MailMergeCleanupOptions.RemoveUnusedRegions;
doc.MailMerge.ExecuteWithRegions(ds.Tables["A"]);

doc.Save(ArtifactsDir + "MailMerge.RemoveEmptyTables.docx");

doc = new Document(ArtifactsDir + "MailMerge.RemoveEmptyTables.docx");
Assert.AreEqual(1, doc.GetChildNodes(NodeType.Table, true).Count);

Mostra come rimuovere i paragrafi vuoti che una stampa unione potrebbe creare dal documento di output dell’unione.

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

Mostra come rimuovere automaticamente i MERGEFIELD inutilizzati durante la stampa unione.

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

// Crea un documento con MERGEFIELD per tre colonne di una tabella di origine dati di unione di posta,
// e quindi creare una tabella con solo due colonne i cui nomi corrispondono ai nostri 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" });

// Il nostro terzo MERGEFIELD fa riferimento a una colonna "Città", che non esiste nella nostra origine dati.
// La stampa unione lascerà intatti i campi come questo nel loro stato precedente all'unione.
// Impostando la proprietà "CleanupOptions" su "RemoveUnusedFields" verranno rimossi tutti i MERGEFIELD
// che non vengono utilizzati durante una stampa unione per ripulire i documenti uniti.
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);

Guarda anche