دمج خلايا الجدول

في بعض الأحيان، تتطلب صفوف معينة في الجدول عنوانًا أو كتلًا كبيرة من النص تشغل العرض الكامل للجدول. للحصول على تصميم مناسب للجدول، يمكن للمستخدم دمج عدة خلايا في جدول واحد. يدعم Aspose.Words الخلايا المدمجة عند العمل مع جميع تنسيقات الإدخال، بما في ذلك استيراد محتوى HTML.

كيفية دمج خلايا الجدول

في Aspose.Words، يتم تمثيل الخلايا المدمجة بالخصائص التالية لفئة CellFormat:

  • HorizontalMerge الذي يصف ما إذا كانت الخلية جزءًا من دمج أفقي للخلايا
  • VerticalMerge الذي يصف ما إذا كانت الخلية جزءًا من دمج عمودي للخلايا

تحدد قيم هذه الخصائص سلوك دمج الخلايا:

  • الخلية الأولى في سلسلة من الخلايا المدمجة سوف تحتوي على CellMerge.First
  • أي خلايا مدمجة لاحقًا ستحتوي على CellMerge.Previous
  • الخلية التي لم يتم دمجها سيكون لها CellMerge.None

تحقق مما إذا تم دمج الخلية

للتحقق مما إذا كانت الخلية جزءًا من سلسلة من الخلايا المدمجة، فإننا ببساطة نتحقق من خصائص HorizontalMerge وVerticalMerge.

يوضح مثال التعليمات البرمجية التالي كيفية طباعة نوع دمج الخلايا الأفقي والرأسي:

دمج خلايا الجدول عند استخدام DocumentBuilder

لدمج الخلايا في جدول تم إنشاؤه باستخدام DocumentBuilder، تحتاج إلى تعيين نوع الدمج المناسب لكل خلية حيث يتوقع الدمج - أولاً CellMerge.First ثم CellMerge.Previous.

يجب عليك أيضًا أن تتذكر مسح إعداد الدمج لتلك الخلايا التي لا يلزم فيها الدمج - يمكن القيام بذلك عن طريق تعيين أول خلية غير مدمجة على CellMerge.None. إذا لم يتم ذلك، سيتم دمج كافة الخلايا في الجدول.

يوضح مثال التعليمات البرمجية التالي كيفية إنشاء جدول يحتوي على صفين حيث يتم دمج الخلايا الموجودة في الصف الأول أفقيًا:

يوضح مثال التعليمات البرمجية التالي كيفية إنشاء جدول مكون من عمودين حيث يتم دمج الخلايا الموجودة في العمود الأول عموديًا:

دمج خلايا الجدول في حالات أخرى

في المواقف الأخرى التي لا يتم فيها استخدام DocumentBuilder، كما هو الحال في جدول موجود، قد لا يكون دمج الخلايا بالطريقة السابقة سهلاً. بدلاً من ذلك، يمكننا تغليف العمليات الأساسية المتعلقة بتطبيق خصائص الدمج على الخلايا بطريقة تجعل المهمة أسهل بكثير. تشبه هذه الطريقة طريقة الدمج التلقائي، والتي يتم استدعاؤها لدمج نطاق من الخلايا في جدول.

سيقوم الكود أدناه بدمج خلايا الجدول في النطاق المحدد، بدءًا من الخلية المحددة وانتهاءً بالخلية النهائية. في هذه الحالة، يمكن أن يمتد النطاق لعدة صفوف أو أعمدة:

يوضح مثال التعليمات البرمجية التالي كيفية دمج نطاق من الخلايا بين خليتين محددتين:

اعتمادًا على إصدار .NET Framework الذي تستخدمه، قد ترغب في تحسين هذه الطريقة عن طريق تحويلها إلى طريقة ملحقة. في هذه الحالة، يمكنك استدعاء هذه الطريقة مباشرة على خلية لدمج نطاق من الخلايا، مثل cell1.Merge(cell2).

الخلايا المدمجة عموديًا وأفقيًا في جدول HTML

كما قلنا في المقالات السابقة، الجدول في Microsoft Word هو عبارة عن مجموعة من الصفوف المستقلة. يحتوي كل صف على مجموعة من الخلايا المستقلة عن خلايا الصفوف الأخرى. وبالتالي، في جدول Microsoft Word لا يوجد كائن مثل “العمود”، و"العمود الأول" هو شيء مثل “مجموعة الخلايا الأولى من كل صف في الجدول”. يتيح ذلك للمستخدمين الحصول على جدول، على سبيل المثال، يتكون الصف الأول من خليتين - 2 سم و1 سم، والصف الثاني يتكون من خليتين مختلفتين - عرض 1 سم و2 سم. ويدعم Aspose.Words مفهوم الجداول هذا.

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

تحويل إلى خلايا مدمجة أفقيا

في بعض الأحيان لا يكون من الممكن اكتشاف الخلايا التي تم دمجها لأن بعض الإصدارات الأحدث من Microsoft Word لم تعد تستخدم علامات الدمج عند دمج الخلايا أفقيًا. ولكن بالنسبة للحالات التي يتم فيها دمج الخلايا في خلية أفقيًا حسب عرضها باستخدام إشارات الدمج، توفر Aspose.Words طريقة ConvertToHorizontallyMergedCells لتحويل الخلايا. تقوم هذه الطريقة ببساطة بتحويل الجدول وإضافة خلايا جديدة حسب الحاجة.

يوضح مثال التعليمات البرمجية التالي الطريقة المذكورة أعلاه قيد التشغيل: