نظرة عامة على الحقول
Aspose.Words هي مكتبة فئة مصممة لمعالجة مستندات Microsoft Word من جانب الخادم وتدعم الحقول بالطرق التالية:
- يتم الاحتفاظ بجميع الحقول الموجودة في المستند أثناء الفتح/الحفظ والتحويلات
- إمكانية تحديث نتائج معظم المجالات
سنتعرف في هذه المقالة على المزيد حول بنية الحقل والحقول المدعومة في Aspose.Words وتفاصيل العمل بهذه الحقول.
الهيكل الميداني
يتكون الحقل من:
- يتم استخدام بداية الحقل والعقد الفاصلة لتشمل المحتوى الذي يشكل رمز الحقل (عادة كنص عادي).
- يشمل فاصل الحقل ونهاية الحقل نتيجة الحقل. يمكن أن يتكون هذا من أنواع مختلفة من المحتوى تتراوح من النصوص إلى الفقرات إلى الجداول.
- قد لا تحتوي بعض الحقول على فاصل مما يعني أن المحتوى بأكمله يشكل رمز الحقل.
- يحدد رمز الحقل سلوك الحقل ويتكون من معرف الحقل وغالبًا ما تكون معلمات أخرى مثل اسم الحقل والمفاتيح.
- تحتوي النتيجة الميدانية على أحدث تقييم للمجال. يتم تخزين هذه القيمة في النتيجة الميدانية وهي ما يتم عرضه للمستخدم. قد لا تحتوي بعض الحقول على أي نتيجة ميدانية وبالتالي لن يتم عرض أي شيء في المستند. وبالمثل، قد لا يتم تحديث بعض الحقول بعد، وبالتالي لن يكون لها أيضًا نتيجة ميدانية.
يتم تخزين المحتوى الذي يشكل رمز الحقل كعقد Run بين FieldStart وFieldSeparator. يتم تخزين نتيجة الحقل بين عقدتي FieldSeparator وFieldEnd ويمكن أن تتكون من أنواع مختلفة من المحتوى. عادةً ما تحتوي نتيجة الحقل على نص مكون من عقد Run فقط، ومع ذلك فمن الممكن أن تكون عقدة FieldEnd موجودة في فقرة مختلفة تمامًا، وبالتالي تجعل نتيجة الحقل تتكون من عقد المستويات المنطقية للعقد في المستند مثل Table وParagraph أيضًا.
فيما يلي عرض لكيفية تخزين الحقل في Aspose.Words باستخدام مثال “DocumentExplorer” الذي يمكن العثور عليه في جيثب.
الحقول في Aspose.Words Document Object Model (DOM)
عندما يتم تحميل مستند في Aspose.Words، يتم تحميل حقول المستند في Aspose.Words Document Object Model (DOM) كمجموعة من المكونات المنفصلة (العقد). يتم تحميل حقل واحد كمجموعة من عقد FieldStart وFieldSeparator وFieldEnd بالإضافة إلى المحتوى الموجود بين هذه العقد. إذا لم يكن للحقل نتيجة حقل، فلن تكون هناك عقدة FieldSeparator. يتم دائمًا العثور على كل هذه العقد مضمنة (مثل أبناء Paragraph أو SmartTag.
في Aspose.Words، كل عقدة من عقد FieldXXX مشتقة من FieldChar. توفر هذه الفئة خاصية للتحقق من نوع الحقل الذي تمثله العقدة المحددة من خلال خاصية FieldType. على سبيل المثال، يمثل FieldType.FieldMergeField حقل دمج في المستند.
هناك بعض الحقول المحددة الموجودة في مستند Word والتي لم يتم استيرادها إلى Aspose.Words كمجموعة من عقد FieldXXX. على سبيل المثال، يتم استيراد حقل LINK
وحقل INCLUDEPICTURE
إلى Aspose.Words ككائن Shape. يوفر هذا الكائن خصائص للعمل مع بيانات الصورة المخزنة عادةً في هذه الحقول. لاستيراد حقل INCLUDEPICTURE
كعقد FieldXXX، يجب تحديد خيار PreserveIncludePictureField كملف true.
يتم أيضًا استيراد حقول النموذج إلى Aspose.Words كفئة خاصة بها. تمثل فئة FormField حقل نموذج في مستند Word وتوفر طرقًا إضافية خاصة بحقل النموذج.
الحقول المدعومة
يتم دعم حساب الحقول التالية في الإصدار الحالي من Aspose.Words:
- = (الصيغة)
ADDRESSBLOCK
ASK
AUTHOR
AUTONUM
AUTONUMLGL
AUTONUMOUT
AUTOTEXT
BARCODE
COMMENTS
COMPARE
CREATEDATE
DATABASE
DATE
DISPLAYBARCODE
DOCPROPERTY
DOCVARIABLE
EDITTIME
EQ
FILENAME
FILESIZE
FILLIN
FORMCHECKBOX
FORMDROPDOWN
FORMTEXT
GLOSSARY
GOTOBUTTON
GREETINGLINE
HYPERLINK
IF
IMPORT
INCLUDE
INCLUDEPICTURE
INCLUDETEXT
INDEX
INFO
KEYWORDS
LASTSAVEDBY
LISTNUM
MACROBUTTON
MERGEBARCODE
MERGEFIELD
MERGEREC
MERGESEQ
NEXT
NEXTIF
NOTEREF
NUMCHARS
NUMPAGES
NUMWORDS
PAGE
PAGEREF
PRINTDATE
QUOTE
REF
REVNUM
SAVEDATE
SECTION
SECTIONPAGES
SEQ
SET
SHAPE
SKIPIF
STYLEREF
SUBJECT
SYMBOL
TEMPLATE
TIME
TITLE
TOA
TOC
USERADDRESS
USERINITIALS
USERNAME
التحليل الميداني المتطور
يتبع Aspose.Words الطريقة التي يعالج بها Microsoft Word الحقول ونتيجة لذلك فإنه يتعامل بشكل صحيح مع:
- الحقول المتداخلة:
IF { =OR({ COMPARE { =2.5 +PRODUCT(3,5 ,8.4) } > 4}, { =2/2 }) } = 1 "Credit not acceptable" "Credit acceptable"
- يمكن أن تكون حجة الحقل نتيجة لحقل متداخل
- يمكن أن تكون الحقول متداخلة داخل رمز الحقل وكذلك في نتيجة الحقل
- مسافات/بدون مسافات، علامات الاقتباس/بدون علامات الاقتباس، أحرف الهروب في الحقول وما إلى ذلك:
MERGEFIELD \f"Text after""Field \n\ame with \" and \\\ and \\\*"\bTextBefor\e
- الحقول التي تمتد عبر فقرات متعددة
حقول الصيغة
يوفر Aspose.Words تطبيقًا جديًا للغاية لمحرك الصيغة ويدعم ما يلي:
- العوامل الحسابية والمنطقية:
=(54+4*(6-77)-(5))+(-6-5)/4/5
- المهام:
=ABS(-01.4)+2.645/(5.6^3.5)+776457 \\\# "#,##0"
- إشارات إلى الإشارات المرجعية:
=IF(C>4, 5,ABS(A)*.76) +3.85
- مفاتيح تنسيق الأرقام:
=00000000 \\\# "$#,##0.00;($#,##0.00)"
يتم دعم الوظائف التالية في التعبيرات: ABS
، AND
، AVERAGE
، COUNT
، DEFINED
، FALSE
، IF
، INT
، MAX
، MIN
، MOD
، NOT
، OR
، PRODUCT
، ROUND
، SIGN
، SUM
، TRUE.
حقول IF
وCOMPARE
فقط بعض تعبيرات IF
التي يمكن لـ Aspose.Words حسابها بسهولة يجب أن تعطيك فكرة عن مدى قوة هذه الميزة:
IF 3 > 5.7^4+MAX(4,3) True False
IF "abcd" > "abc" True False
IF "?ab*" = "1abdsg" True False
IF 4 = "2*2" True False
COMPARE 3+5/34 < 4.6/3/2
حقول DATE
وTIME
يدعم Aspose.Words جميع مفاتيح تنسيق التاريخ والوقت المتوفرة في Microsoft Word، بعض الأمثلة هي:
DATE @ "d-MMM-yy"
DATE @ "d/MM/yyyy h:mm am/pm
حقول Mail Merge
لا يفرض Aspose.Words أي حد على مدى تعقيد حقول Mail Merge في مستنداتك ويدعم حقول IF
وحقول الصيغة المتداخلة ويمكنه أيضًا حساب اسم حقل الدمج باستخدام صيغة.
بعض الأمثلة على حقول Mail Merge التي يدعمها Aspose.Words:
- مفاتيح حقل Mail merge:
MERGEFIELD FirstName \\\\\\\\* FirstCap \b "Mr. "
- حقول الدمج المتداخلة في الصيغة:
IF {
MERGEFIELDValue1 } >= {
MERGEFIELDValue2 } True False
- حساب اسم حقل الدمج في وقت التشغيل:
MERGEFIELD {
IF{
MERGEFIELDValue1 } >= {
MERGEFIELDValue2 } FirstName"LastName" }
- الانتقال المشروط إلى السجل التالي في مصدر البيانات:
NEXTIF {
MERGEFIELDValue1 } <= { =IF(-2.45 >= 6*{
MERGEFIELDValue2 }, 2, -.45) }
مفاتيح التنسيق
يمكن أن يحتوي الحقل الموجود في المستند على مفاتيح تنسيق تحدد كيفية تنسيق القيمة الناتجة. يدعم Aspose.Words مفاتيح التنسيق التالية:
- \@ – تنسيق التاريخ والوقت
- \# – تنسيق الأرقام
- \* قبعات
- \* فيرست كاب
- \* أدنى
- \* العلوي
- \* CHARFORMAT - تنسيق النتيجة وفقًا للحرف الأول من رمز الحقل
- \* MERGEFORMAT - تنسيق النتيجة وفقًا لكيفية تنسيق النتيجة القديمة
Date وتنسيق الأرقام في الحقول
عندما يحسب Aspose.Words نتيجة حقل، فإنه غالبًا ما يحتاج إلى تحليل سلسلة إلى قيمة رقم أو تاريخ وأيضًا تنسيقها مرة أخرى إلى سلسلة. بشكل افتراضي، يستخدم Aspose.Words ثقافة مؤشر الترابط الحالية لإجراء التحليل والتنسيق عند حساب قيم الحقل أثناء تحديث الحقل و mail merge. هناك أيضًا خيارات متوفرة في شكل فئة FieldOptions والتي تسمح بمزيد من التحكم في الثقافة المستخدمة أثناء التحديث الميداني.
- افتراضيًا، يتم تعيين خاصية FieldUpdateCultureSource على CurrentThread والتي تقوم بتنسيق الحقول باستخدام ثقافة مؤشر الترابط الحالية
- يمكن ضبط هذه الخاصية على FieldCode بحيث يتم استخدام اللغة المحددة من رمز الحقل الخاص بالحقل للتنسيق بدلاً من ذلك
التنسيق باستخدام ثقافة الموضوع الحالي
للتحكم في الثقافة المستخدمة أثناء حساب الحقل، ما عليك سوى تعيين خاصية Thread.CurrentThread.CurrentCulture على ثقافة من اختيارك قبل استدعاء حساب الحقل.
يوضح مثال التعليمات البرمجية التالي كيفية تغيير الثقافة المستخدمة في حقول التنسيق أثناء التحديث:
يتيح استخدام الثقافة الحالية لتنسيق الحقول للنظام إمكانية التحكم بسهولة وبشكل متسق في كيفية تنسيق جميع الحقول في المستند أثناء التحديث الميداني.
التنسيق باستخدام الثقافة في المستند
من ناحية أخرى، يقوم Microsoft Word بتنسيق كل حقل فردي بناءً على لغة النص الموجود في الحقل (على وجه التحديد، الامتدادات من رمز الحقل). في بعض الأحيان أثناء تحديث الحقل، قد يكون هذا هو السلوك المرغوب، على سبيل المثال، إذا كان لديك مستندات معممة تحتوي على محتوى يتكون من العديد من اللغات المختلفة وترغب في أن يحترم كل حقل اللغة المستخدمة من النص. يدعم Aspose.Words أيضًا هذه الوظيفة.
توفر فئة Document خاصية FieldOptions التي تحتوي على أعضاء يمكن استخدامها للتحكم في كيفية تحديث الحقول داخل المستند.
يوضح مثال التعليمات البرمجية التالي كيفية تحديد المكان الذي يتم فيه اختيار الثقافة المستخدمة لتنسيق التاريخ أثناء التحديث الميداني وmail merge: