إدراج صورة في خلية

مقدمة

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

  • الأسلوب الأول — وضع صورة عائمة فوق خلية. أضف Picture إلى ورقة العمل، وعيّن خاصية Placement إلى MoveAndSize، واضبط خلايا الإرساء الخاصة بها (UpperLeftRow، UpperLeftColumn، LowerRightRow، LowerRightColumn) بحيث تغطي الصورة خلية واحدة بالضبط.
  • الأسلوب الثاني — تضمين صورة مباشرة داخل خلية. عيّن وحدات البايت الخاصة بالصورة إلى خاصية EmbeddedImage للخلية. تتدرج الصورة تلقائيًا لتلائم مساحة عرض الخلية وتنتقل معها. يتناول باقي هذه المقالة كلا الأسلوبين، ويشرح واجهات برمجة التطبيقات ذات الصلة، ويوضح كيفية استخدامها في الكود.

الأسلوب الأول: وضع صورة فوق خلية

الصورة العائمة هي كائن Picture يوجد على طبقة الرسم في ورقة العمل. على الرغم من أنها ليست جزءًا من أي خلية واحدة، إلا أنها مُرساة إلى نطاق من الخلايا. تحدد خلايا الإرساء الخاصة بالصورة — الزاوية العلوية اليسرى والزاوية السفلية اليمنى — امتدادها البصري على ورقة العمل. افتراضيًا، تمتد الصورة المُضافة حديثًا إلى عدة خلايا. لجعل الصورة العائمة تغطي خلية واحدة بالضبط، تحتاج إلى:

  1. إضافة الصورة باستخدام worksheet.getPictures().add(int row, int column, InputStream stream)، مما يربط الصورة الجديدة بالخلية المُحددة.
  2. تعيين خصائص الإرساء الأربعة بحيث يتطابق المستطيل المحيط بالصورة مع الخلية المستهدفة.
  3. تعيين picture.setPlacement(PlacementType.MOVE_AND_SIZE) بحيث تتحرك الصورة وتتغير حجمها مع الخلية الأساسية عندما يقوم المستخدم بتغيير عرض العمود أو ارتفاع الصف.

إرساء الصورة في خلية واحدة

يتم تعريف إرساء الصورة من خلال أربع خصائص فهرسة تبدأ من الصفر:

  • picture.setUpperLeftRow(int) — فهرس الصف للحافة العلوية للصورة.
  • picture.setUpperLeftColumn(int) — فهرس العمود للحافة اليسرى للصورة.
  • picture.setLowerRightRow(int) — فهرس الصف للحافة السفلية للصورة. لجعل الحافة السفلية للصورة في أسفل الصف r، عيّن هذا إلى r + 1.
  • picture.setLowerRightColumn(int) — فهرس العمود للحافة اليمنى للصورة. لجعل الحافة اليمنى للصورة في يمين العمود c، عيّن هذا إلى c + 1.