نظرة عامة على الحقول

Aspose.Words هي مكتبة فئة مصممة لمعالجة مستندات Microsoft Word من جانب الخادم وتدعم الحقول بالطرق التالية:

  • يتم الاحتفاظ بجميع الحقول الموجودة في المستند أثناء الفتح/الحفظ والتحويلات
  • إمكانية تحديث نتائج معظم المجالات

سنتعرف في هذه المقالة على المزيد حول بنية الحقل والحقول المدعومة في Aspose.Words وتفاصيل العمل بهذه الحقول.

الهيكل الميداني

يتكون الحقل من:

  • يتم استخدام بداية الحقل والعقد الفاصلة لتشمل المحتوى الذي يشكل رمز الحقل (عادة كنص عادي).
  • يشمل فاصل الحقل ونهاية الحقل نتيجة الحقل. يمكن أن يتكون هذا من أنواع مختلفة من المحتوى تتراوح من النصوص إلى الفقرات إلى الجداول.
  • قد لا تحتوي بعض الحقول على فاصل مما يعني أن المحتوى بأكمله يشكل رمز الحقل.
  • يحدد رمز الحقل سلوك الحقل ويتكون من معرف الحقل وغالبًا ما تكون معلمات أخرى مثل اسم الحقل والمفاتيح.
  • تحتوي النتيجة الميدانية على أحدث تقييم للمجال. يتم تخزين هذه القيمة في النتيجة الميدانية وهي ما يتم عرضه للمستخدم. قد لا تحتوي بعض الحقول على أي نتيجة ميدانية وبالتالي لن يتم عرض أي شيء في المستند. وبالمثل، قد لا يتم تحديث بعض الحقول بعد، وبالتالي لن يكون لها أيضًا نتيجة ميدانية.

fields-aspose-words

يتم تخزين المحتوى الذي يشكل رمز الحقل كعقد Run بين FieldStart وFieldSeparator. يتم تخزين نتيجة الحقل بين عقدتي FieldSeparator وFieldEnd ويمكن أن تتكون من أنواع مختلفة من المحتوى. عادةً ما تحتوي نتيجة الحقل على نص مكون من عقد Run فقط، ومع ذلك فمن الممكن أن تكون عقدة FieldEnd موجودة في فقرة مختلفة تمامًا، وبالتالي تجعل نتيجة الحقل تتكون من عقد المستويات المنطقية للعقد في المستند مثل Table وParagraph أيضًا.

فيما يلي عرض لكيفية تخزين الحقل في Aspose.Words باستخدام مثال “DocumentExplorer” الذي يمكن العثور عليه في جيثب.

document-explorer-aspose-words

الحقول في 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 حقل دمج في المستند.

الحقول المدعومة

يتم دعم حساب الحقول التالية في الإصدار الحالي من 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 } >= {MERGEFIELD Value2 } True False
  • حساب اسم حقل الدمج في وقت التشغيل: MERGEFIELD { IF{MERGEFIELDValue1 } >= {MERGEFIELD Value2 } FirstName"LastName" }
  • الانتقال المشروط إلى السجل التالي في مصدر البيانات: NEXTIF { MERGEFIELDValue1 } <= { =IF(-2.45 >= 6*{MERGEFIELD Value2 }, 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: