Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
تُعدّ ملاءمة صورة تمامًا داخل خلية واحدة من المتطلبات الشائعة عند تصميم جداول البيانات التي تعمل كتقارير مرئية أو كتالوجات منتجات أو أدلة موظفين أو لوحات معلومات أو قوائم جرد. بدلًا من تمديد صورة عبر عدة خلايا أو وضعها بشكل فضفاض على ورقة العمل، قد ترغب في الحصول على صورة نظيفة مرتبطة بخلية تظل محاذية للخلية المالكة لها. يدعم Aspose.Cells هذا السيناريو بطريقتين متكاملتين:
Picture إلى ورقة العمل، وعيّن خاصية placement إلى MoveAndSize، واضبط خلايا الإرساء (upperLeftRow، upperLeftColumn، lowerRightRow، lowerRightColumn) بحيث تغطي الصورة خلية واحدة بالضبط.embeddedImage الخاصة بالخلية. تتدرج الصورة تلقائيًا لتلائم منطقة عرض الخلية وتنتقل معها.
يتناول باقي هذه المقالة كلا الأسلوبين، ويوضح واجهات برمجة التطبيقات ذات الصلة، ويبيّن كيفية استخدامها في الكود.الصورة العائمة هي كائن Picture يعيش على طبقة الرسم في ورقة العمل. على الرغم من أنها ليست جزءًا من أي خلية واحدة، إلا أنها مُرتبطة بنطاق من الخلايا. تحدد خلايا الإرساء للصورة — الزاويتان العلوية اليسرى والسفلية اليمنى — مدى ظهورها بصريًا على ورقة العمل. افتراضيًا، تمتد الصورة المُضافة حديثًا عبر عدة خلايا.
لجعل الصورة العائمة تغطي خلية واحدة بالضبط، تحتاج إلى:
worksheet.pictures.add(row, column, stream)، والذي يربط الصورة الجديدة بالخلية المُحددة.picture.placement إلى PlacementType.MoveAndSize بحيث تتحرك الصورة ويتغيّر حجمها مع الخلية الأساسية عندما يقوم المستخدم بتغيير عرض العمود أو ارتفاع الصف.يتم تعريف إرساء الصورة من خلال أربع خصائص فهرسة تبدأ من الصفر:
picture.upperLeftRow — فهرس الصف للحافة العلوية للصورة.picture.upperLeftColumn — فهرس العمود للحافة اليسرى للصورة.picture.lowerRightRow — فهرس الصف للحافة السفلية للصورة. لجعل الحافة السفلية للصورة تقع في أسفل الصف r، عيّن هذا إلى r + 1.picture.lowerRightColumn — فهرس العمود للحافة اليمنى للصورة. لجعل الحافة اليمنى للصورة تقع في يمين العمود c، عيّن هذا إلى c + 1.فهارس الصفوف والأعمدة في Aspose.Cells تبدأ من الصفر. الخلية C6 لها فهرس صف 5 وفهرس عمود 2. تُعد أخطاء الفرق بواحد في إحداثيات الإرساء السفلية اليمنى المصدر الأكثر شيوعًا لظهور الصور وكأنها تتداخل مع خلية مجاورة.
picture.placement هو تعداد من نوع PlacementType يتحكم في كيفية تصرف الصورة عندما يقوم المستخدم بتغيير حجم الصف أو العمود الموجود أسفلها. القيمة الموصى بها لصورة داخل خلية واحدة هي PlacementType.MoveAndSize، والتي تتسبب في تحرك الصورة وتغيير حجمها معًا مع الخلية الأساسية، مع الحفاظ على الملاءمة الدقيقة.
Workbook جديدًا (أو افتح ملفًا موجودًا).Worksheet المستهدف من workbook.worksheets[0].worksheet.pictures.add(5, 2, stream) لإضافة صورة مُرتبطة بالخلية C6. احفظ مرجع Picture المُعاد.upperLeftRow = 5، upperLeftColumn = 2، lowerRightRow = 6، lowerRightColumn = 3.picture.placement = PlacementType.MoveAndSize للحفاظ على محاذاة الصورة مع C6 عند تغيير حجم العمود أو الصف..xlsx.
يوضح الكود التالي الأسلوب الكامل.const AsposeCells = require("aspose.cells");
const fs = require("fs");
const workbook = new AsposeCells.Workbook();
const worksheet = workbook.getWorksheets().get(0);
const fs_stream = fs.createReadStream("logo.png");
const picIndex = worksheet.getPictures().add(5, 2, fs_stream);
const picture = worksheet.getPictures().get(picIndex);
picture.setUpperLeftRow(5);
picture.setUpperLeftColumn(2);
picture.setLowerRightRow(6);
picture.setLowerRightColumn(3);
picture.setPlacement(AsposeCells.PlacementType.MoveAndSize);
workbook.save("output.xlsx", AsposeCells.SaveFormat.Xlsx);
يوفر Aspose.Cells أيضًا آلية أبسط للصور المرتبطة بالخلايا: خاصية cell.embeddedImage. يُعدّ تعيين بايتات الصورة إلى هذه الخاصية بمثابة إرفاق الصورة بالخلية نفسها، كما لو كانت محتوى مضمّنًا.
cell.embeddedImage الخيار الأكثر إيجازًا عندما يكون هدفك ببساطة “صورة تعيش داخل هذه الخلية”.Workbook جديدًا (أو افتح ملفًا موجودًا).Worksheet المستهدف من workbook.worksheets[0].fs.readFileSync).worksheet.cells["C6"] أو worksheet.cells[5, 2].embeddedImage الخاصة بالخلية..xlsx.
يوضح الكود التالي الأسلوب الكامل.var workbook = new AsposeCells.Workbook();
var worksheet = workbook.getWorksheets().get(0);
// الحصول على الخلية المستهدفة C6
var cell = worksheet.getCells().get("C6");
// قراءة ملف الصورة في مصفوفة بايتات
var imageData = fs.readFileSync("logo.png");
// تضمين الصورة مباشرة في الخلية
cell.setEmbeddedImage(imageData);
// اختياريًا قم بضبط ارتفاع الصف وعرض العمود لتكون الصورة المضمنة أكثر وضوحًا
worksheet.getCells().setColumnWidth(2, 30); // العمود C (الفهرس 2)
worksheet.getCells().setRowHeight(5, 100); // الصف 6 (الفهرس 5)
// حفظ المصنف الناتج كملف .xlsx
workbook.save("output.xlsx", AsposeCells.SaveFormat.Xlsx);
ينتج كلا الأسلوبين صورة تلائم داخل خلية واحدة، لكنهما يختلفان في كيفية تخزين الصورة وسلوكها:
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.