تطبيق صيغ ورقة عمل المخطط في العروض التقديمية باستخدام PHP
حول صيغ جدول البيانات للرسوم البيانية في العروض التقديمية
Chart spreadsheet (أو chart worksheet) في العرض التقديمي هو مصدر البيانات للرسمة البيانية. يحتوي جدول البيانات للرسمة على بيانات يتم تمثيلها على الرسمة بطريقة رسومية. عند إنشاء رسم بياني في PowerPoint، يتم إنشاء ورقة العمل المرتبطة بهذا الرسم تلقائيًا. يتم إنشاء ورقة العمل لجميع أنواع الرسوم: مخطط خطي، مخطط شريطي، مخطط شمسية، مخطط دائري، إلخ. لعرض جدول البيانات في PowerPoint عليك النقر مزدوجًا على الرسم:

يحتوي جدول البيانات على أسماء عناصر الرسم (Category Name: Category1، Serie Name) وجدول ببيانات رقمية تتناسب مع هذه الفئات والسلاسل. افتراضيًا، عند إنشاء رسم بياني جديد – تُضبط بيانات جدول البيانات بالقيم الافتراضية. ثم يمكنك تعديل بيانات الجدول يدويًا في ورقة العمل.
عادةً ما يمثل الرسم بيانات معقدة (مثل المحللين الماليين أو العلميّين)، حيث تكون الخلايا محسوبة من قيم خلايا أخرى أو من بيانات ديناميكية أخرى. حساب قيمة الخلية يدويًا وإدخالها ثابتًا يجعل تعديلها لاحقًا صعبًا. إذا غيرت قيمة خلية معينة، سيتطلب تحديث جميع الخلايا المعتمدة عليها. علاوةً على ذلك، قد تعتمد بيانات الجدول على بيانات جداول أخرى، مما يخلق مخططًا بياناتًا معقدًا يحتاج إلى تحديث سهل ومرن.
Chart spreadsheet formula في العرض التقديمي هي تعبير يُحسب تلقائيًا ويحدّث بيانات جدول البيانات. تُعرّف صيغة الجدول منطق حساب البيانات لخلية معينة أو مجموعة خلايا. الصيغة هي صيغة رياضية أو منطقية تستخدم: مراجع خلايا، دوال حسابية، عوامل منطقية، عوامل حسابية، دوال تحويل، ثوابت نصية، إلخ. تُكتب تعريف الصيغة في الخلية، ولا تحتوي هذه الخلية على قيمة بسيطة. الصيغة تحسب القيمة وتعيدها، ثم تُعطى هذه القيمة للخلية. صيغ جداول البيانات في العروض التقديمية هي في الأصل صيغ إكسل، وتدعم نفس الدوال الافتراضية والعوامل والثوابت.
في Aspose.Slides يُمثَّل جدول البيانات بالطريقة ChartData::getChartDataWorkbook للنوع ChartDataWorkbook. يمكن تعيين الصيغة وتغييرها باستخدام ChartDataCell::setFormula. الوظائف المدعومة للصيغ في Aspose.Slides:
- ثوابت منطقية
- ثوابت عددية
- ثوابت نصية
- ثوابت خطأ
- عوامل حسابية
- عوامل مقارنة
- مراجع خلايا بنمط A1
- مراجع خلايا بنمط R1C1
- دوال معرفة مسبقًا
عادةً ما تخزن الجداول القيم المحسوبة الأخيرة للصيغة. إذا لم تتغير بيانات الرسم بعد تحميل العرض، فإن طريقة ChartDataCell::getValue تُعيد تلك القيم عند القراءة. لكن إذا تم تعديل بيانات الجدول، أثناء القراءة تُرمى الاستثناء CellUnsupportedDataException للصياغات غير المدعومة. ذلك لأنه عند تحليل الصيغ بنجاح يتم تحديد تبعيات الخلايا وتأكيد صحة القيم الأخيرة. وإذا فشل تحليل الصيغة، لا يمكن ضمان صحة القيمة.
إضافة صيغة جدول بيانات رسم إلى عرض تقديمي
أولاً، أضف رسمًا إلى الشريحة الأولى من عرض تقديمي جديد باستخدام ShapeCollection::addChart. تُنشأ ورقة العمل للرسمة تلقائيًا ويمكن الوصول إليها عبر الطريقة ChartData::getChartDataWorkbook:
$pres = new Presentation();
try {
$chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::ClusteredColumn, 150, 150, 500, 300);
$workbook = $chart->getChartData()->getChartDataWorkbook();
# ...
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
لنعين بعض القيم في الخلايا باستخدام طريقة ChartDataCell::setValue للنوع Object، مما يعني أنه يمكنك تعيين أي قيمة:
$workbook->getCell(0, "F2")->setValue(-2.5);
$workbook->getCell(0, "G3")->setValue(6.3);
$workbook->getCell(0, "H4")->setValue(3);
الآن لكتابة صيغة في الخلية، يمكنك استخدام طريقة ChartDataCell::setFormula.
ملاحظة: تُستخدم طريقة ChartDataCell::setFormula لتعيين مراجع خلايا بنمط A1.
لتعيين صيغة بنمط R1C1، يمكنك استخدام طريقة ChartDataCell::setR1C1Formula.
ثم إذا قرأت القيم من الخلايا B2 و C2، سيتم حسابها:
$value1 = $cell1->getValue();// 7.8
$value2 = $cell2->getValue();// 2.1
الثوابت المنطقية
يمكنك استخدام الثوابت المنطقية مثل FALSE و TRUE في صيغ الخلايا:
$workbook->getCell(0, "A2")->setValue(false);
$cell = $workbook->getCell(0, "B2");
$cell->setFormula("A2 = TRUE");
$value = $cell->getValue();// القيمة تحتوي على المنطقية "false"
الثوابت العددية
يمكن استخدام الأرقام بنظام عادي أو علمي لإنشاء صيغ جدول بيانات الرسم:
$workbook->getCell(0, "A2")->setFormula("1 + 0.5");
$workbook->getCell(0, "B2")->setFormula(".3 * 1E-2");
الثوابت النصية
الثابت النصي (أو الحرفي) هو قيمة محددة تُستخدم كما هي ولا تتغيّر. قد تكون الثوابت النصية: تواريخ، نصوص، أرقام، إلخ:
$workbook->getCell(0, "A2")->setFormula("\"abc\"");
$workbook->getCell(0, "B2")->setFormula("\"2/3/2020 12:00\"");
ثوابت الخطأ
أحيانًا لا يمكن حساب النتيجة بواسطة الصيغة. في هذه الحالة يُظهر رمز الخطأ في الخلية بدلًا من قيمتها. لكل نوع خطأ رمز محدد:
- #DIV/0! – تحاول الصيغة القسمة على الصفر.
- #GETTING_DATA – قد تظهر في خلية بينما لا تزال قيمتها تُحسب.
- #N/A – المعلومات مفقودة أو غير متوفرة. قد يكون السبب: الخلايا المستخدمة في الصيغة فارغة، وجود مساحة إضافية، خطأ إملائي، إلخ.
- #NAME? – لا يمكن العثور على خلية أو كائن صيغة باسم معين.
- #NULL! – قد تظهر عندما يكون هناك خطأ في الصيغة مثل: (,) أو مساحة تُستَخدم بدلًا من نقطتين (:).
- #NUM! – الرقم في الصيغة قد يكون غير صالح، طويل جدًا أو صغير جدًا، إلخ.
- #REF! – مرجع خلية غير صالح.
- #VALUE! – نوع قيمة غير متوقع. مثال: قيمة نصية تُوضع في خلية رقمية.
$cell = $workbook->getCell(0, "A2");
$cell->setFormula("2 / 0");
$value = $cell->getValue();// القيمة تحتوي على السلسلة "#DIV/0!"
العوامل الحسابية
يمكنك استخدام جميع العوامل الحسابية في صيغ جدول بيانات الرسم:
| العامل | المعنى | مثال |
|---|---|---|
| + (إشارة الجمع) | جمع أو جمع أحادي | 2 + 3 |
| - (إشارة الطرح) | طرح أو نفي | 2 - 3 -3 |
| * (نجمة) | ضرب | 2 * 3 |
| / (شرطة مائلة) | قسمة | 2 / 3 |
| % (علامة النسبة) | نسبة مئوية | 30% |
| ^ (ق caret) | أس | 2 ^ 3 |
ملاحظة: لتغيير ترتيب التقييم، احطِ الجزء الذي يُحسب أولًا بأقواس.
العوامل المقارنة
يمكنك مقارنة قيم الخلايا باستخدام عوامل المقارنة. عندما تُقارن قيمتين بهذه العوامل، تكون النتيجة قيمة منطقية إما TRUE أو FALSE:
| العامل | المعنى | مثال |
|---|---|---|
| = (علامة المساواة) | مساوٍ لـ | A2 = 3 |
| <> (علامة عدم المساواة) | ليس مساويًا لـ | A2 <> 3 |
| > (إشارة أكبر من) | أكبر من | A2 > 3 |
| >= (إشارة أكبر من أو يساوي) | أكبر من أو يساوي | A2 >= 3 |
| < (إشارة أصغر من) | أصغر من | A2 < 3 |
| <= (إشارة أصغر من أو يساوي) | أصغر من أو يساوي | A2 <= 3 |
مراجع خلايا بنمط A1
مراجع خلايا بنمط A1 تُستَخدم في أوراق العمل التي يُعرّف فيها العمود بحرف (مثل “A") والصف برقم (مثل “1"). يمكن استخدام مراجع A1 بالشكل التالي:
| مرجع الخلية | مثال | مطلق | نسبي | مختلط |
|---|---|---|---|---|
| خلية | $A$2 | A2 | A$2 $A2 |
|
| صف | $2:$2 | 2:2 | - | |
| عمود | $A:$A | A:A | - | |
| نطاق | $A$2:$C$4 | A2:C4 | $A$2:C4 A$2:$C4 |
إليك مثال على استخدام مرجع خلية بنمط A1 في صيغة:
$workbook->getCell(0, "A2")->setFormula("C3 + SUM(F2:H5)");
مراجع خلايا بنمط R1C1
مراجع خلايا بنمط R1C1 تُستَخدم في أوراق العمل التي يكون لكل من الصف والعمود معرف رقمي. يمكن استخدام مراجع R1C1 بالشكل التالي:
| مرجع الخلية | مثال | مطلق | نسبي | مختلط |
|---|---|---|---|---|
| خلية | R2C3 | R[2]C[3] | R2C[3] R[2]C3 |
|
| صف | R2 | R[2] | - | |
| عمود | C3 | C[3] | - | |
| نطاق | R2C3:R5C7 | R[2]C[3]:R[5]C[7] | R2C3:R[5]C[7] R[2]C3:R5C[7] |
إليك مثال على استخدام مرجع خلية بنمط R1C1 في صيغة:
$workbook->getCell(0, "A2")->setR1C1Formula("R2C4 + SUM(R5C6:R7C9)");
الدوال المعرفة مسبقًا
هناك دوال معرفة مسبقًا يمكن استخدامها في الصيغ لتبسيط تنفيذها. تُغلق هذه الدوال أكثر العمليات شيوعًا، مثل:
- ABS
- AVERAGE
- CEILING
- CHOOSE
- CONCAT
- CONCATENATE
- DATE (نظام تاريخ 1900)
- DAYS
- FIND
- FINDB
- IF
- INDEX (نموذج مرجع)
- LOOKUP (نموذج متجه)
- MATCH (نموذج متجه)
- MAX
- SUM
- VLOOKUP
الأسئلة الشائعة
هل تُدعم ملفات إكسل الخارجية كمصدر بيانات لرسم يحتوي على صيغ؟
نعم. يدعم Aspose.Slides ملفات العمل الخارجية كمصدر بيانات للرسوم، مما يتيح لك استخدام صيغ من ملف XLSX خارج العرض التقديمي.
هل يمكن لصيغ الرسوم الإشارة إلى أوراق داخل نفس ملف العمل باستخدام اسم الورقة؟
نعم. تتبع الصيغ نموذج الإشارة القياسي في إكسل، لذا يمكنك الإشارة إلى أوراق أخرى داخل نفس ملف العمل أو إلى ملف عمل خارجي. للمراجع الخارجية، أدرج المسار واسم ملف العمل باستخدام صياغة إكسل.