دمج البريد
دمج البريد
يوضح هذا الدليل كيفية العمل مع رموز حقول الدمج البريدي وبيانات تكوين الدمج البريدي في 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 ملخص
| فئة / طريقة | وصف |
|---|---|
FieldMergeField | MERGEFIELD حقل: FieldName, FieldNameNoPrefix, TextBefore, TextAfter, IsMapped |
FieldAddressBlock | ADDRESSBLOCK حقل: خصائص تنسيق العنوان |
FieldGreetingLine | GREETINGLINE حقل: خصائص تنسيق التحية |
FieldDatabase | حقل DATABASE: Connection, Query, FileName, TableFormat |
IFieldDatabaseProvider | يوفر نتائج الاستعلام لحقول DATABASE عبر GetQueryResult() |
FieldNextIf / FieldSkipIf | حقول الدمج الشرطية NEXTIF / SKIPIF |
MergeFieldImageDimension | العرض/الارتفاع لصور حقول دمج الصورة |
Document.MailMergeSettings | بيانات تكوين دمج البريد المحفوظة (ليس اتصال بيانات مباشر) |