MailMergeCleanupOptions

MailMergeCleanupOptions enumeration

تحديد الخيارات التي تحدد العناصر التي تتم إزالتها أثناء دمج البريد.

[Flags]
public enum MailMergeCleanupOptions

قيم

اسمقيمةوصف
None0يحدد قيمة افتراضية.
RemoveEmptyParagraphs1يحدد ما إذا كان يجب إزالة الفقرات التي تحتوي على حقول دمج البريد بدون بيانات من المستند. عند تعيين هذا الخيار، تتم أيضًا إزالة الفقرات التي تحتوي على حقول دمج البداية والنهاية للمنطقة والتي تكون فارغة .
RemoveUnusedRegions2يحدد ما إذا كان يجب إزالة مناطق دمج البريد غير المستخدمة من المستند.
RemoveUnusedFields4يحدد ما إذا كان يجب إزالة حقول الدمج غير المستخدمة من المستند.
RemoveContainingFields8يحدد ما إذا كان يجب إزالة الحقول التي تحتوي على حقول دمج (على سبيل المثال، IFs) من المستند إذا تمت إزالة حقول الدمج المتداخلة.
RemoveStaticFields10يحدد ما إذا كان يجب إزالة الحقول الثابتة من المستند. الحقول الثابتة هي حقول تظل نتائجها كما هي عند أي تغيير في المستند. الحقول التي لا تخزن نتائجها في document ويتم حسابها بسرعة (مثلFieldListNumFieldSymbol ، وما إلى ذلك) لا تعتبر ثابتة.
RemoveEmptyTableRows20تحديد ما إذا كان يجب إزالة الصفوف الفارغة التي تحتوي على مناطق دمج المراسلات من المستند.

أمثلة

يوضح كيفية إزالة الفقرات الفارغة التي قد تنشئها عملية دمج البريد من مستند إخراج الدمج.

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

يوضح كيفية إزالة MERGEFIELD التي لا يتم استخدامها أثناء دمج البريد تلقائيًا.

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

// إنشاء مستند باستخدام MERGEFIELDs لثلاثة أعمدة من جدول مصدر بيانات دمج المراسلات،
// ثم قم بإنشاء جدول يحتوي على عمودين فقط تتطابق أسماؤهما مع MERGEFIELDs الخاصة بنا.
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" });

// يشير MERGEFIELD الثالث إلى عمود "المدينة"، وهو غير موجود في مصدر البيانات لدينا.
// سوف يترك دمج البريد الحقول مثل هذه سليمة في حالتها السابقة للدمج.
// سيؤدي تعيين خاصية "CleanupOptions" على "RemoveUnusedFields" إلى إزالة أي MERGEFIELDs
// التي لا يتم استخدامها أثناء عملية دمج البريد لتنظيف مستندات الدمج.
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);

أنظر أيضا