دمج البريد

دمج البريد

دمج البريد

يوضح هذا الدليل كيفية العمل مع رموز حقول الدمج البريدي وبيانات تكوين الدمج البريدي في Aspose.Words FOSS لـ .NET، وأين تقع الحدود مع تنفيذ الدمج. يتعرف Aspose.Words FOSS لـ .NET على رموز حقول الدمج البريدي في Word ويحدّثها — ADDRESSBLOCK, DATABASE, GREETINGLINE, MERGEFIELD, NEXTIF, و SKIPIF — كجزء من محرك تقييم الحقول الخاص به، ويمكنه قراءة بيانات تكوين الدمج البريدي (MailMergeSettings) تم حفظها داخل مستند. تشغيل دمج فعلي ضد مصدر بيانات خارجي لإنشاء مستندات مخرجة مملوءة — الـ MailMerge.Execute() سير العمل المألوف من المنتج التجاري — هو not مُنفّذ في هذا الإصدار؛ لا MailMerge فئة تنفيذ موجودة في السطح الحالي لـ API.


MERGEFIELD — قراءة وتعديل نواقل الدمج

FieldMergeField يطبق حقل MERGEFIELD. FieldName وFieldNameNoPrefix تُرجع اسم العمود المصدر للبيانات الذي يرتبط به الحقل، TextBefore/TextAfter تحتفظ بنص حرفي يحيط بالقيمة المدمجة، وIsMapped/IsVerticalFormatting تُبلغ عن تعيين حقل الدمج وعلامات التخطيط. مثل كل نوع حقل، يدعم GetFieldCode()، Update()، Unlink()، وRemove().


ADDRESSBLOCK و GREETINGLINE

FieldAddressBlock يطبق حقل ADDRESSBLOCK، مع FormatAddressOnCountryOrRegion وIncludeCountryOrRegionName وExcludedCountryOrRegionName وNameAndAddressFormat وLanguageId التي تتحكم في تنسيق عنوان المستلم. FieldGreetingLine يطبق GREETINGLINE، مع AlternateText وNameFormat وLanguageId التي تتحكم في نص التحية.


حقل DATABASE

FieldDatabase ينفّذ حقل DATABASE، مكشوفًا تفاصيل الاتصال المخزنة في الحقل: Connection، FileName، Query، TableFormat، InsertHeadings، InsertOnceOnMailMerge، FirstRecord، وLastRecord. لتزويد نتائج الاستعلام عندما يتم تحديث هذا الحقل، نفّذ IFieldDatabaseProvider وطريقة GetQueryResult(fileName, connection, query, field) الخاصة به، ثم عيّنها إلى Document.FieldOptions.FieldDatabaseProvider قبل استدعاء Update(). يجب تعيين خاصية Connection — بدونها، لا يملك Update() مصدر بيانات للاستعلام.


حقول الدمج الشرطية — NEXTIF و SKIPIF

FieldNextIf و FieldSkipIf ينفّذان حقلي NEXTIF و SKIPIF، كلٌ يكشف عن LeftExpression و ComparisonOperator و RightExpression للاختبار الشرطي. يمكن لـ Document.FieldOptions.ComparisonExpressionEvaluator (وهو IComparisonExpressionEvaluator) أن يتجاوز طريقة تقييم هذه التعبيرات الشرطية.


تحجيم حقل دمج الصورة

MergeFieldImageDimension يمثل عرضًا أو ارتفاعًا لصورة تُدرج عبر حقل دمج صورة، يُنشأ كـ new MergeFieldImageDimension(value) (بالنقاط) أو new MergeFieldImageDimension(value, unit) مع MergeFieldImageDimensionUnit صريحة (Point أو Percent). خصائصه Value و Unit قابلة للكتابة كلاهما.


ما هو ضمن النطاق، وما ليس كذلك

Document.MailMergeSettings يرجع a MailMergeSettings كائن يُنمذج تكوين الدمج البريدي، يبقى OOXML داخل مستند — DataSource, ConnectString, Query, MainDocumentType, DataType, Destination, CheckErrors، وإعدادات كائن مصدر بيانات Office (ODSO) عبر OdsoFieldMapData/OdsoRecipientData المجموعات. هذا هو التكوين data الذي يحمل المستند، وليس اتصالًا مباشرًا: القراءة والكتابة MailMergeSettings لا يتصل بقاعدة بيانات أو جدول بيانات أو قائمة عناوين، ولا يحتوي هذا الإصدار على MailMerge فئة تنفيذ لتشغيل دمج وإنتاج مستندات مخرجة مُعبأة منه. ما يدعمه هذا الإصدار هو طبقة المستوى الحقلية أعلاه: التعرف على رموز حقول الدمج، قراءتها، تحديثها، وتعديلها داخل مستند واحد عبر محرك تقييم الحقول.


نصائح وأفضل الممارسات

  • اعتبر MailMergeSettings كبيانات تعريف المستند التي يمكنك قراءتها وإعادة تمريرها، وليس كـ API للاتصال بالبيانات الخارجية — لا يوجد محرك تنفيذ خلفه في هذا الإصدار.
  • قم دائمًا بتعيين FieldDatabase.Connection قبل استدعاء Update() على حقل DATABASE، وإلا لن يكون لدى التحديث ما يستعلم عنه.
  • نفّذ IFieldDatabaseProvider مرة واحدة وعيّنها عبر Document.FieldOptions.FieldDatabaseProvider لتوحيد طريقة حل جميع حقول DATABASE في المستند لبياناتها.
  • استخدم FieldMergeField.FieldName لقراءة العمود المصدر للبيانات الذي يرتبط به MERGEFIELD قبل اتخاذ قرار كيفية معالجته برمجيًا.

المشكلات الشائعة

المشكلةالسببمن فضلك قدّم
FieldDatabase.Update() لا يُرجع أي بياناتConnection غير مُعيّن، أو لا يوجد IFieldDatabaseProvider مسجَّلعيّن Connection، وخصّص Document.FieldOptions.FieldDatabaseProvider قبل التحديث
من المتوقع API بنمط MailMerge.Execute()تنفيذ الدمج ضد مصدر بيانات خارجي غير مُطبق في نسخة FOSS هذهاعمل مع فئات حقول الدمج مباشرةً (FieldMergeField، FieldDatabase، إلخ) داخل مستند واحد، أو استخدم النسخة التجارية Aspose.Words لـ .NET لتنفيذ دمج كامل
شروط NEXTIF/SKIPIF تُقيم بشكل غير متوقعتقييم تعبير المقارنة الافتراضي لا يتطابق مع الدلالات المتوقعةنفّذ IComparisonExpressionEvaluator وعينه إلى Document.FieldOptions.ComparisonExpressionEvaluator

FAQ

هل يمكنني تشغيل دمج بريد مع ملف CSV أو قاعدة بيانات في هذا الإصدار؟

لا. ينفّذ هذا الإصدار رموز حقول دمج البريد ونموذج بيانات التكوين MailMergeSettings، لكن لا توجد فئة تنفيذ MailMerge للاتصال بمصدر بيانات خارجي وتوليد مستندات مملوءة.

ماذا يمكنني فعلاً أن أفعل بحقول MERGEFIELD إذن؟

يمكنك قراءة هذه الحقول وتعديلها مباشرة — FieldMergeField.FieldName لاسم العمود المرتبط، TextBefore/TextAfter للنص الحرفي المحيط، وUpdate()/Unlink()/Remove() مثل أي حقل آخر — داخل المستند الحالي.

هل MailMergeSettings عديم الفائدة بدون تنفيذ الدمج؟

لا — لا يزال مفيدًا لقراءة أو إعادة تمرير تكوين دمج البريد المخزن في المستند، مثل DataSource أو Query أو MainDocumentType، رغم أن هذه النسخة لا تتعامل مع ذلك التكوين لتشغيل دمج.

كيف أزود بيانات لحقل DATABASE؟

قم بتنفيذ IFieldDatabaseProvider.GetQueryResult(fileName, connection, query, field) وعيّن تنفيذك إلى Document.FieldOptions.FieldDatabaseProvider قبل استدعاء Update().

كيف يمكنني التحكم في حجم الصورة التي تُدرج عبر حقل دمج الصورة؟

استخدم MergeFieldImageDimension، المُنشأ بقيمة نقطية أو قيمة مضافًا إليها MergeFieldImageDimensionUnit صريح (مثل Point أو Percent).


API Reference ملخص

فئة / طريقةوصف
FieldMergeFieldMERGEFIELD حقل: FieldName, FieldNameNoPrefix, TextBefore, TextAfter, IsMapped
FieldAddressBlockADDRESSBLOCK حقل: خصائص تنسيق العنوان
FieldGreetingLineGREETINGLINE حقل: خصائص تنسيق التحية
FieldDatabaseحقل DATABASE: Connection, Query, FileName, TableFormat
IFieldDatabaseProviderيوفر نتائج الاستعلام لحقول DATABASE عبر GetQueryResult()
FieldNextIf / FieldSkipIfحقول الدمج الشرطية NEXTIF / SKIPIF
MergeFieldImageDimensionالعرض/الارتفاع لصور حقول دمج الصورة
Document.MailMergeSettingsبيانات تكوين دمج البريد المحفوظة (ليس اتصال بيانات مباشر)

انظر أيضاً

 العربية