إنشاء أو تحديث مخططات عرض PowerPoint في PHP

نظرة عامة

تصف هذه المقالة كيفية إنشاء مخططات عرض PowerPoint في Java. يمكنك أيضًا تحديث المخططات. تغطي هذه المواضيع.

مخطط: عادي

مخطط: مبعثر

مخطط: دائري

مخطط: شجرة خريطة

مخطط: سهمي

مخطط: مربع وشارب

مخطط: قمع

مخطط: متشتت

مخطط: توزيعي

مخطط: راداري

مخطط: متعدد الفئات

مخطط: خريطة

إجراء: تحديث المخطط

إنشاء مخطط

تساعد المخططات الأشخاص على تصور البيانات بسرعة واكتساب رؤى قد لا تكون واضحة مباشرة من جدول أو ورقة عمل.

لماذا ننشئ المخططات؟

باستخدام المخططات، يمكنك

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

في PowerPoint، يمكنك إنشاء المخططات عبر وظيفة الإدراج التي توفر قوالب لتصميم أنواع متعددة من المخططات. باستخدام Aspose.Slides، يمكنك إنشاء مخططات عادية (مستندة إلى أنواع المخططات الشائعة) ومخططات مخصصة.

إنشاء مخططات عادية

خطوات: إنشاء مخطط

خطوات الكود:

  1. إنشاء مثيل من الفئة Presentation.
  2. الحصول على مرجع الشريحة عبر فهرستها.
  3. إضافة مخطط مع بعض البيانات وتحديد نوع المخطط المفضل لديك.
  4. إضافة عنوان للمخطط.
  5. الوصول إلى ورقة عمل بيانات المخطط.
  6. مسح جميع السلاسل والفئات الافتراضية.
  7. إضافة سلاسل وفئات جديدة.
  8. إضافة بعض بيانات المخطط الجديدة لسلسلة المخطط.
  9. إضافة لون تعبئة لسلسلة المخطط.
  10. إضافة تسميات لسلسلة المخطط.
  11. كتابة العرض التقديمي المعدل كملف PPTX.

هذا المثال PHP يوضح كيفية إنشاء مخطط عادي:

  # ينشئ كائن عرض تقديمي يمثل ملف PPTX
  $pres = new Presentation();
  try {
    # الوصول إلى الشريحة الأولى
    $sld = $pres->getSlides()->get_Item(0);
    # يضيف مخططًا ببياناته الافتراضية
    $chart = $sld->getShapes()->addChart(ChartType::ClusteredColumn, 0, 0, 500, 500);
    # يضبط عنوان المخطط
    $chart->getChartTitle()->addTextFrameForOverriding("Sample Title");
    $chart->getChartTitle()->getTextFrameForOverriding()->getTextFrameFormat()->setCenterText(NullableBool::True);
    $chart->getChartTitle()->setHeight(20);
    $chart->hasTitle();
    # يضبط السلسلة الأولى لعرض القيم
    $chart->getChartData()->getSeries()->get_Item(0)->getLabels()->getDefaultDataLabelFormat()->setShowValue(true);
    # يضبط الفهرس لورقة بيانات المخطط
    $defaultWorksheetIndex = 0;
    # يحصل على ورقة عمل بيانات المخطط
    $fact = $chart->getChartData()->getChartDataWorkbook();
    # يحذف السلاسل والفئات الافتراضية التي تم إنشاؤها
    $chart->getChartData()->getSeries()->clear();
    $chart->getChartData()->getCategories()->clear();
    $s = $chart->getChartData()->getSeries()->size();
    $s = $chart->getChartData()->getCategories()->size();
    # يضيف سلاسل جديدة
    $chart->getChartData()->getSeries()->add($fact->getCell($defaultWorksheetIndex, 0, 1, "Series 1"), $chart->getType());
    $chart->getChartData()->getSeries()->add($fact->getCell($defaultWorksheetIndex, 0, 2, "Series 2"), $chart->getType());
    # يضيف فئات جديدة
    $chart->getChartData()->getCategories()->add($fact->getCell($defaultWorksheetIndex, 1, 0, "Caetegoty 1"));
    $chart->getChartData()->getCategories()->add($fact->getCell($defaultWorksheetIndex, 2, 0, "Caetegoty 2"));
    $chart->getChartData()->getCategories()->add($fact->getCell($defaultWorksheetIndex, 3, 0, "Caetegoty 3"));
    # يأخذ السلسلة الأولى للمخطط
    $series = $chart->getChartData()->getSeries()->get_Item(0);
    # الآن يملأ بيانات السلسلة
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, 1, 1, 20));
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, 2, 1, 50));
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, 3, 1, 30));
    # يضبط لون التعبئة للسلسلة
    $series->getFormat()->getFill()->setFillType(FillType::Solid);
    $series->getFormat()->getFill()->getSolidFillColor()->setColor(java("java.awt.Color")->RED);
    # يأخذ السلسلة الثانية للمخطط
    $series = $chart->getChartData()->getSeries()->get_Item(1);
    # يملأ بيانات السلسلة
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, 1, 2, 30));
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, 2, 2, 10));
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, 3, 2, 60));
    # يضبط لون التعبئة للسلسلة
    $series->getFormat()->getFill()->setFillType(FillType::Solid);
    $series->getFormat()->getFill()->getSolidFillColor()->setColor(java("java.awt.Color")->GREEN);
    # إنشاء تسميات مخصصة لكل فئة للسلسلة الجديدة
    # يضبط العلامة الأولى لعرض اسم الفئة
    $lbl = $series->getDataPoints()->get_Item(0)->getLabel();
    $lbl->getDataLabelFormat()->setShowCategoryName(true);
    $lbl = $series->getDataPoints()->get_Item(1)->getLabel();
    $lbl->getDataLabelFormat()->setShowSeriesName(true);
    # يعرض القيمة للعلامة الثالثة
    $lbl = $series->getDataPoints()->get_Item(2)->getLabel();
    $lbl->getDataLabelFormat()->setShowValue(true);
    $lbl->getDataLabelFormat()->setShowSeriesName(true);
    $lbl->getDataLabelFormat()->setSeparator("/");
    # يحفظ العرض التقديمي مع المخطط
    $pres->save("output.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

إنشاء مخططات مبعثرة

المخططات المبعثرة (المعروفة أيضًا بالمخططات النقطية أو رسومات x-y) تُستخدم غالبًا للتحقق من الأنماط أو إظهار الارتباطات بين متغيرين.

قد ترغب في استخدام مخطط مبعثر عندما

  • لديك بيانات رقمية مقترنة
  • لديك متغيران يتناسقان معًا
  • تريد تحديد ما إذا كان المتغيران مرتبطين
  • لديك متغير مستقل له قيم متعددة للمتغير التابع

خطوات: إنشاء مخطط مبعثر | خطوات: إنشاء مخطط PowerPoint مبعثر | خطوات: إنشاء مخطط عرض تقديمي مبعثر في PowerPoint

  1. يرجى اتباع الخطوات المذكورة أعلاه في إنشاء مخططات عادية
  2. للخطوة الثالثة، أضف مخططًا مع بعض البيانات وحدد نوع المخطط كإحدى التالي:
    1. ChartType::ScatterWithMarkers - يمثل مخططًا مبعثرًا.
    2. ChartType::ScatterWithSmoothLinesAndMarkers - يمثل مخططًا مبعثرًا متصلًا بمنحنيات، مع علامات بيانات.
    3. ChartType::ScatterWithSmoothLines - يمثل مخططًا مبعثرًا متصلًا بمنحنيات، بدون علامات بيانات.
    4. ChartType::ScatterWithStraightLinesAndMarkers - يمثل مخططًا مبعثرًا متصلًا بخطوط مستقيمة، مع علامات بيانات.
    5. ChartType::ScatterWithStraightLines - يمثل مخططًا مبعثرًا متصلًا بخطوط مستقيمة، بدون علامات بيانات.

هذا المثال PHP يوضح كيفية إنشاء مخططات مبعثرة مع سلسلة مختلفة من العلامات:

  # ينشئ كائن عرض تقديمي يمثل ملف PPTX
  $pres = new Presentation();
  try {
    # الوصول إلى الشريحة الأولى
    $slide = $pres->getSlides()->get_Item(0);
    # ينشئ المخطط الافتراضي
    $chart = $slide->getShapes()->addChart(ChartType::ScatterWithSmoothLines, 0, 0, 400, 400);
    # يحصل على فهرس ورقة بيانات المخطط الافتراضية
    $defaultWorksheetIndex = 0;
    # يحصل على ورقة عمل بيانات المخطط
    $fact = $chart->getChartData()->getChartDataWorkbook();
    # يحذف سلسلة العرض التجريبية
    $chart->getChartData()->getSeries()->clear();
    # يضيف سلاسل جديدة
    $chart->getChartData()->getSeries()->add($fact->getCell($defaultWorksheetIndex, 1, 1, "Series 1"), $chart->getType());
    $chart->getChartData()->getSeries()->add($fact->getCell($defaultWorksheetIndex, 1, 3, "Series 2"), $chart->getType());
    # يحصل على أول سلسلة مخطط
    $series = $chart->getChartData()->getSeries()->get_Item(0);
    # يضيف نقطة جديدة (1:3) إلى السلسلة
    $series->getDataPoints()->addDataPointForScatterSeries($fact->getCell($defaultWorksheetIndex, 2, 1, 1), $fact->getCell($defaultWorksheetIndex, 2, 2, 3));
    # يضيف نقطة جديدة (2:10)
    $series->getDataPoints()->addDataPointForScatterSeries($fact->getCell($defaultWorksheetIndex, 3, 1, 2), $fact->getCell($defaultWorksheetIndex, 3, 2, 10));
    # يغير نوع السلسلة
    $series->setType(ChartType::ScatterWithStraightLinesAndMarkers);
    # يغير علامة سلسلة المخطط
    $series->getMarker()->setSize(10);
    $series->getMarker()->setSymbol(MarkerStyleType::Star);
    # يحصل على السلسلة الثانية للمخطط
    $series = $chart->getChartData()->getSeries()->get_Item(1);
    # يضيف نقطة جديدة (5:2) هناك
    $series->getDataPoints()->addDataPointForScatterSeries($fact->getCell($defaultWorksheetIndex, 2, 3, 5), $fact->getCell($defaultWorksheetIndex, 2, 4, 2));
    # يضيف نقطة جديدة (3:1)
    $series->getDataPoints()->addDataPointForScatterSeries($fact->getCell($defaultWorksheetIndex, 3, 3, 3), $fact->getCell($defaultWorksheetIndex, 3, 4, 1));
    # يضيف نقطة جديدة (2:2)
    $series->getDataPoints()->addDataPointForScatterSeries($fact->getCell($defaultWorksheetIndex, 4, 3, 2), $fact->getCell($defaultWorksheetIndex, 4, 4, 2));
    # يضيف نقطة جديدة (5:1)
    $series->getDataPoints()->addDataPointForScatterSeries($fact->getCell($defaultWorksheetIndex, 5, 3, 5), $fact->getCell($defaultWorksheetIndex, 5, 4, 1));
    # يغير علامة سلسلة المخطط
    $series->getMarker()->setSize(10);
    $series->getMarker()->setSymbol(MarkerStyleType::Circle);
    $pres->save("AsposeChart_out.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

إنشاء مخططات دائرية

المخططات الدائرية تُستخدم لعرض العلاقة بين الجزء والكامل في البيانات، خاصة عندما تحتوي البيانات على تسميات تصنيفية مع قيم رقمية. إذا كان لديك العديد من الأجزاء أو التسميات، قد تفضّل استخدام مخطط شريطي بدلاً من ذلك.

خطوات: إنشاء مخطط دائري | خطوات: إنشاء مخطط PowerPoint دائري | خطوات: إنشاء مخطط عرض تقديمي دائري في PowerPoint

  1. إنشاء مثيل من الفئة Presentation.
  2. الحصول على مرجع الشريحة عبر فهرستها.
  3. إضافة مخطط مع بيانات افتراضية والنوع المطلوب (في هذه الحالة، ChartType.Pie).
  4. الوصول إلى ورقة عمل بيانات المخطط IChartDataWorkbook.
  5. مسح السلاسل والفئات الافتراضية.
  6. إضافة سلاسل وفئات جديدة.
  7. إضافة بيانات مخطط جديدة للسلسلة.
  8. إضافة نقاط جديدة للمخطط وتحديد ألوان مخصصة لأقسام المخطط الدائري.
  9. تعيين تسميات للسلسلة.
  10. تعيين خطوط دليل لتسميات السلسلة.
  11. تعيين زاوية الدوران لشرائح المخطط الدائري.
  12. كتابة العرض التقديمي المعدل إلى ملف PPTX.

هذا المثال PHP يوضح كيفية إنشاء مخطط دائري:

  # ينشئ كائن عرض تقديمي يمثل ملف PPTX
  $pres = new Presentation();
  try {
    # يصل إلى الشريحة الأولى
    $slides = $pres->getSlides()->get_Item(0);
    # يضيف مخططًا ببيانات افتراضية
    $chart = $slides->getShapes()->addChart(ChartType::Pie, 100, 100, 400, 400);
    # يضبط عنوان المخطط
    $chart->getChartTitle()->addTextFrameForOverriding("Sample Title");
    $chart->getChartTitle()->getTextFrameForOverriding()->getTextFrameFormat()->setCenterText(NullableBool::True);
    $chart->getChartTitle()->setHeight(20);
    $chart->setTitle(true);
    # يضبط السلسلة الأولى لعرض القيم
    $chart->getChartData()->getSeries()->get_Item(0)->getLabels()->getDefaultDataLabelFormat()->setShowValue(true);
    # يضبط الفهرس لورقة بيانات المخطط
    $defaultWorksheetIndex = 0;
    # يحصل على ورقة عمل بيانات المخطط
    $fact = $chart->getChartData()->getChartDataWorkbook();
    # يحذف السلاسل والفئات الافتراضية التي تم إنشاؤها
    $chart->getChartData()->getSeries()->clear();
    $chart->getChartData()->getCategories()->clear();
    # يضيف فئات جديدة
    $chart->getChartData()->getCategories()->add($fact->getCell(0, 1, 0, "First Qtr"));
    $chart->getChartData()->getCategories()->add($fact->getCell(0, 2, 0, "2nd Qtr"));
    $chart->getChartData()->getCategories()->add($fact->getCell(0, 3, 0, "3rd Qtr"));
    # يضيف سلسلة جديدة
    $series = $chart->getChartData()->getSeries()->add($fact->getCell(0, 0, 1, "Series 1"), $chart->getType());
    # يملأ بيانات السلسلة
    $series->getDataPoints()->addDataPointForPieSeries($fact->getCell($defaultWorksheetIndex, 1, 1, 20));
    $series->getDataPoints()->addDataPointForPieSeries($fact->getCell($defaultWorksheetIndex, 2, 1, 50));
    $series->getDataPoints()->addDataPointForPieSeries($fact->getCell($defaultWorksheetIndex, 3, 1, 30));
    # لا يعمل في الإصدار الجديد
    # Adding new points and setting sector color
    # series.IsColorVaried = true;
    $chart->getChartData()->getSeriesGroups()->get_Item(0)->setColorVaried(true);
    $point = $series->getDataPoints()->get_Item(0);
    $point->getFormat()->getFill()->setFillType(FillType::Solid);
    $point->getFormat()->getFill()->getSolidFillColor()->setColor(java("java.awt.Color")->CYAN);
    # يضبط حد القطاع
    $point->getFormat()->getLine()->getFillFormat()->setFillType(FillType::Solid);
    $point->getFormat()->getLine()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->GRAY);
    $point->getFormat()->getLine()->setWidth(3.0);
    $point->getFormat()->getLine()->setStyle(LineStyle->ThinThick);
    $point->getFormat()->getLine()->setDashStyle(LineDashStyle->DashDot);
    $point1 = $series->getDataPoints()->get_Item(1);
    $point1->getFormat()->getFill()->setFillType(FillType::Solid);
    $point1->getFormat()->getFill()->getSolidFillColor()->setColor(java("java.awt.Color")->ORANGE);
    # يضبط حد القطاع
    $point1->getFormat()->getLine()->getFillFormat()->setFillType(FillType::Solid);
    $point1->getFormat()->getLine()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->BLUE);
    $point1->getFormat()->getLine()->setWidth(3.0);
    $point1->getFormat()->getLine()->setStyle(LineStyle->Single);
    $point1->getFormat()->getLine()->setDashStyle(LineDashStyle->LargeDashDot);
    $point2 = $series->getDataPoints()->get_Item(2);
    $point2->getFormat()->getFill()->setFillType(FillType::Solid);
    $point2->getFormat()->getFill()->getSolidFillColor()->setColor(java("java.awt.Color")->YELLOW);
    # يضبط حد القطاع
    $point2->getFormat()->getLine()->getFillFormat()->setFillType(FillType::Solid);
    $point2->getFormat()->getLine()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->RED);
    $point2->getFormat()->getLine()->setWidth(2.0);
    $point2->getFormat()->getLine()->setStyle(LineStyle->ThinThin);
    $point2->getFormat()->getLine()->setDashStyle(LineDashStyle->LargeDashDotDot);
    # ينشئ تسميات مخصصة لكل فئة للسلسلة الجديدة
    $lbl1 = $series->getDataPoints()->get_Item(0)->getLabel();
    # lbl.ShowCategoryName = true;
    $lbl1->getDataLabelFormat()->setShowValue(true);
    $lbl2 = $series->getDataPoints()->get_Item(1)->getLabel();
    $lbl2->getDataLabelFormat()->setShowValue(true);
    $lbl2->getDataLabelFormat()->setShowLegendKey(true);
    $lbl2->getDataLabelFormat()->setShowPercentage(true);
    $lbl3 = $series->getDataPoints()->get_Item(2)->getLabel();
    $lbl3->getDataLabelFormat()->setShowSeriesName(true);
    $lbl3->getDataLabelFormat()->setShowPercentage(true);
    # يعرض خطوط القادة للمخطط
    $series->getLabels()->getDefaultDataLabelFormat()->setShowLeaderLines(true);
    # يضبط زاوية الدوران لقطاعات المخطط الدائري
    $chart->getChartData()->getSeriesGroups()->get_Item(0)->setFirstSliceAngle(180);
    # يحفظ العرض التقديمي مع المخطط
    $pres->save("PieChart_out.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

إنشاء مخططات خطية

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

  1. إنشاء مثيل من الفئة Presentation.
  2. الحصول على مرجع الشريحة عبر فهرستها.
  3. إضافة مخطط مع بيانات افتراضية والنوع المطلوب (في هذه الحالة، ChartType::Line).
  4. الوصول إلى ورقة عمل بيانات المخطط IChartDataWorkbook.
  5. مسح السلاسل والفئات الافتراضية.
  6. إضافة سلاسل وفئات جديدة.
  7. إضافة بيانات مخطط جديدة للسلسلة.
  8. كتابة العرض التقديمي المعدل إلى ملف PPTX.

هذا المثال PHP يوضح كيفية إنشاء مخطط خطي:

  $pres = new Presentation();
  try {
    $lineChart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::Line, 10, 50, 600, 350);
    $pres->save("lineChart.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

افتراضيًا، تُربط النقاط في المخطط الخطي بخطوط مستقيمة مستمرة. إذا رغبت في ربط النقاط بخطوط متقطعة، يمكنك تحديد نوع الخط المتقطّع بهذه الطريقة:

  $lineChart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::Line, 10, 50, 600, 350);
  foreach($lineChart->getChartData()->getSeries() as $series) {
    $series->getFormat()->getLine()->setDashStyle(LineDashStyle->Dash);
  }

إنشاء مخططات خريطة شجرية

مخططات خريطة شجرية تُستخدم لبيانات المبيعات عندما تريد إظهار الحجم النسبي لفئات البيانات وفي الوقت نفسه جذب الانتباه سريعًا إلى العناصر التي تساهم بصورة كبيرة في كل فئة.

خطوات: إنشاء مخطط خريطة شجرية | خطوات: إنشاء مخطط PowerPoint خريطة شجرية | خطوات: إنشاء مخطط عرض تقديمي خريطة شجرية في PowerPoint

  1. إنشاء مثيل من الفئة Presentation.
  2. الحصول على مرجع الشريحة عبر فهرستها.
  3. إضافة مخطط مع بيانات افتراضية والنوع المطلوب (في هذه الحالة، ChartType.TreeMap).
  4. الوصول إلى ورقة عمل بيانات المخطط IChartDataWorkbook.
  5. مسح السلاسل والفئات الافتراضية.
  6. إضافة سلاسل وفئات جديدة.
  7. إضافة بيانات مخطط جديدة للسلسلة.
  8. كتابة العرض التقديمي المعدل إلى ملف PPTX.

هذا المثال PHP يوضح كيفية إنشاء مخطط خريطة شجرية:

  $pres = new Presentation();
  try {
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::Treemap, 50, 50, 500, 400);
    $chart->getChartData()->getCategories()->clear();
    $chart->getChartData()->getSeries()->clear();
    $wb = $chart->getChartData()->getChartDataWorkbook();
    $wb->clear(0);
    # فرع 1
    $leaf = $chart->getChartData()->getCategories()->add($wb->getCell(0, "C1", "Leaf1"));
    $leaf->getGroupingLevels()->setGroupingItem(1, "Stem1");
    $leaf->getGroupingLevels()->setGroupingItem(2, "Branch1");
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "C2", "Leaf2"));
    $leaf = $chart->getChartData()->getCategories()->add($wb->getCell(0, "C3", "Leaf3"));
    $leaf->getGroupingLevels()->setGroupingItem(1, "Stem2");
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "C4", "Leaf4"));
    # فرع 2
    $leaf = $chart->getChartData()->getCategories()->add($wb->getCell(0, "C5", "Leaf5"));
    $leaf->getGroupingLevels()->setGroupingItem(1, "Stem3");
    $leaf->getGroupingLevels()->setGroupingItem(2, "Branch2");
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "C6", "Leaf6"));
    $leaf = $chart->getChartData()->getCategories()->add($wb->getCell(0, "C7", "Leaf7"));
    $leaf->getGroupingLevels()->setGroupingItem(1, "Stem4");
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "C8", "Leaf8"));
    $series = $chart->getChartData()->getSeries()->add(ChartType::Treemap);
    $series->getLabels()->getDefaultDataLabelFormat()->setShowCategoryName(true);
    $series->getDataPoints()->addDataPointForTreemapSeries($wb->getCell(0, "D1", 4));
    $series->getDataPoints()->addDataPointForTreemapSeries($wb->getCell(0, "D2", 5));
    $series->getDataPoints()->addDataPointForTreemapSeries($wb->getCell(0, "D3", 3));
    $series->getDataPoints()->addDataPointForTreemapSeries($wb->getCell(0, "D4", 6));
    $series->getDataPoints()->addDataPointForTreemapSeries($wb->getCell(0, "D5", 9));
    $series->getDataPoints()->addDataPointForTreemapSeries($wb->getCell(0, "D6", 9));
    $series->getDataPoints()->addDataPointForTreemapSeries($wb->getCell(0, "D7", 4));
    $series->getDataPoints()->addDataPointForTreemapSeries($wb->getCell(0, "D8", 3));
    $series->setParentLabelLayout(ParentLabelLayoutType::Overlapping);
    $pres->save("Treemap.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

إنشاء مخططات سهمية

خطوات: إنشاء مخطط سهمي | خطوات: إنشاء مخطط PowerPoint سهمي | خطوات: إنشاء مخطط عرض تقديمي سهمي في PowerPoint

  1. إنشاء مثيل من الفئة Presentation.
  2. الحصول على مرجع الشريحة عبر فهرستها.
  3. إضافة مخطط مع بيانات افتراضية والنوع المطلوب (ChartType.OpenHighLowClose).
  4. الوصول إلى ورقة عمل بيانات المخطط IChartDataWorkbook.
  5. مسح السلاسل والفئات الافتراضية.
  6. إضافة سلاسل وفئات جديدة.
  7. إضافة بيانات مخطط جديدة للسلسلة.
  8. تحديد تنسيق خطوط HiLowLines.
  9. كتابة العرض التقديمي المعدل إلى ملف PPTX.

مثال PHP لإنشاء مخطط سهمي:

  $pres = new Presentation();
  try {
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::OpenHighLowClose, 50, 50, 600, 400, false);
    $chart->getChartData()->getSeries()->clear();
    $chart->getChartData()->getCategories()->clear();
    $wb = $chart->getChartData()->getChartDataWorkbook();
    $chart->getChartData()->getCategories()->add($wb->getCell(0, 1, 0, "A"));
    $chart->getChartData()->getCategories()->add($wb->getCell(0, 2, 0, "B"));
    $chart->getChartData()->getCategories()->add($wb->getCell(0, 3, 0, "C"));
    $chart->getChartData()->getSeries()->add($wb->getCell(0, 0, 1, "Open"), $chart->getType());
    $chart->getChartData()->getSeries()->add($wb->getCell(0, 0, 2, "High"), $chart->getType());
    $chart->getChartData()->getSeries()->add($wb->getCell(0, 0, 3, "Low"), $chart->getType());
    $chart->getChartData()->getSeries()->add($wb->getCell(0, 0, 4, "Close"), $chart->getType());
    $series = $chart->getChartData()->getSeries()->get_Item(0);
    $series->getDataPoints()->addDataPointForStockSeries($wb->getCell(0, 1, 1, 72));
    $series->getDataPoints()->addDataPointForStockSeries($wb->getCell(0, 2, 1, 25));
    $series->getDataPoints()->addDataPointForStockSeries($wb->getCell(0, 3, 1, 38));
    $series = $chart->getChartData()->getSeries()->get_Item(1);
    $series->getDataPoints()->addDataPointForStockSeries($wb->getCell(0, 1, 2, 172));
    $series->getDataPoints()->addDataPointForStockSeries($wb->getCell(0, 2, 2, 57));
    $series->getDataPoints()->addDataPointForStockSeries($wb->getCell(0, 3, 2, 57));
    $series = $chart->getChartData()->getSeries()->get_Item(2);
    $series->getDataPoints()->addDataPointForStockSeries($wb->getCell(0, 1, 3, 12));
    $series->getDataPoints()->addDataPointForStockSeries($wb->getCell(0, 2, 3, 12));
    $series->getDataPoints()->addDataPointForStockSeries($wb->getCell(0, 3, 3, 13));
    $series = $chart->getChartData()->getSeries()->get_Item(3);
    $series->getDataPoints()->addDataPointForStockSeries($wb->getCell(0, 1, 4, 25));
    $series->getDataPoints()->addDataPointForStockSeries($wb->getCell(0, 2, 4, 38));
    $series->getDataPoints()->addDataPointForStockSeries($wb->getCell(0, 3, 4, 50));
    $chart->getChartData()->getSeriesGroups()->get_Item(0)->getUpDownBars()->setUpDownBars(true);
    $chart->getChartData()->getSeriesGroups()->get_Item(0)->getHiLowLinesFormat()->getLine()->getFillFormat()->setFillType(FillType::Solid);
    foreach($chart->getChartData()->getSeries() as $ser) {
      $ser->getFormat()->getLine()->getFillFormat()->setFillType(FillType::NoFill);
    }
    $pres->save("output.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

إنشاء مخططات مربع وشارب

خطوات: إنشاء مخطط مربع وشارب | خطوات: إنشاء مخطط PowerPoint مربع وشارب | خطوات: إنشاء مخطط عرض تقديمي مربع وشارب في PowerPoint

  1. إنشاء مثيل من الفئة Presentation.
  2. الحصول على مرجع الشريحة عبر فهرستها.
  3. إضافة مخطط مع بيانات افتراضية والنوع المطلوب (ChartType.BoxAndWhisker).
  4. الوصول إلى ورقة عمل بيانات المخطط IChartDataWorkbook.
  5. مسح السلاسل والفئات الافتراضية.
  6. إضافة سلاسل وفئات جديدة.
  7. إضافة بيانات مخطط جديدة للسلسلة.
  8. كتابة العرض التقديمي المعدل إلى ملف PPTX.

هذا المثال PHP يوضح كيفية إنشاء مخطط مربع وشارب:

  $pres = new Presentation();
  try {
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::BoxAndWhisker, 50, 50, 500, 400);
    $chart->getChartData()->getCategories()->clear();
    $chart->getChartData()->getSeries()->clear();
    $wb = $chart->getChartData()->getChartDataWorkbook();
    $wb->clear(0);
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "A1", "Category 1"));
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "A2", "Category 1"));
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "A3", "Category 1"));
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "A4", "Category 1"));
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "A5", "Category 1"));
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "A6", "Category 1"));
    $series = $chart->getChartData()->getSeries()->add(ChartType::BoxAndWhisker);
    $series->setQuartileMethod(QuartileMethodType::Exclusive);
    $series->setShowMeanLine(true);
    $series->setShowMeanMarkers(true);
    $series->setShowInnerPoints(true);
    $series->setShowOutlierPoints(true);
    $series->getDataPoints()->addDataPointForBoxAndWhiskerSeries($wb->getCell(0, "B1", 15));
    $series->getDataPoints()->addDataPointForBoxAndWhiskerSeries($wb->getCell(0, "B2", 41));
    $series->getDataPoints()->addDataPointForBoxAndWhiskerSeries($wb->getCell(0, "B3", 16));
    $series->getDataPoints()->addDataPointForBoxAndWhiskerSeries($wb->getCell(0, "B4", 10));
    $series->getDataPoints()->addDataPointForBoxAndWhiskerSeries($wb->getCell(0, "B5", 23));
    $series->getDataPoints()->addDataPointForBoxAndWhiskerSeries($wb->getCell(0, "B6", 16));
    $pres->save("BoxAndWhisker.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

إنشاء مخططات قمع

خطوات: إنشاء مخطط قمع | خطوات: إنشاء مخطط PowerPoint قمع | خطوات: إنشاء مخطط عرض تقديمي قمع في PowerPoint

  1. إنشاء مثيل من الفئة Presentation.
  2. الحصول على مرجع الشريحة عبر فهرستها.
  3. إضافة مخطط مع بيانات افتراضية والنوع المطلوب (ChartType.Funnel).
  4. كتابة العرض التقديمي المعدل إلى ملف PPTX.

الكود PHP يوضح كيفية إنشاء مخطط قمع:

  $pres = new Presentation();
  try {
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::Funnel, 50, 50, 500, 400);
    $chart->getChartData()->getCategories()->clear();
    $chart->getChartData()->getSeries()->clear();
    $wb = $chart->getChartData()->getChartDataWorkbook();
    $wb->clear(0);
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "A1", "Category 1"));
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "A2", "Category 2"));
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "A3", "Category 3"));
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "A4", "Category 4"));
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "A5", "Category 5"));
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "A6", "Category 6"));
    $series = $chart->getChartData()->getSeries()->add(ChartType::Funnel);
    $series->getDataPoints()->addDataPointForFunnelSeries($wb->getCell(0, "B1", 50));
    $series->getDataPoints()->addDataPointForFunnelSeries($wb->getCell(0, "B2", 100));
    $series->getDataPoints()->addDataPointForFunnelSeries($wb->getCell(0, "B3", 200));
    $series->getDataPoints()->addDataPointForFunnelSeries($wb->getCell(0, "B4", 300));
    $series->getDataPoints()->addDataPointForFunnelSeries($wb->getCell(0, "B5", 400));
    $series->getDataPoints()->addDataPointForFunnelSeries($wb->getCell(0, "B6", 500));
    $pres->save("Funnel.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

إنشاء مخططات متشتت

خطوات: إنشاء مخطط متشتت | خطوات: إنشاء مخطط PowerPoint متشتت | خطوات: إنشاء مخطط عرض تقديمي متشتت في PowerPoint

  1. إنشاء مثيل من الفئة Presentation.
  2. الحصول على مرجع الشريحة عبر فهرستها.
  3. إضافة مخطط مع بيانات افتراضية والنوع المطلوب (في هذه الحالة، ChartType.sunburst).
  4. كتابة العرض التقديمي المعدل إلى ملف PPTX.

هذا المثال PHP يوضح كيفية إنشاء مخطط متشتت:

  $pres = new Presentation();
  try {
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::Sunburst, 50, 50, 500, 400);
    $chart->getChartData()->getCategories()->clear();
    $chart->getChartData()->getSeries()->clear();
    $wb = $chart->getChartData()->getChartDataWorkbook();
    $wb->clear(0);
    # الفرع 1
    $leaf = $chart->getChartData()->getCategories()->add($wb->getCell(0, "C1", "Leaf1"));
    $leaf->getGroupingLevels()->setGroupingItem(1, "Stem1");
    $leaf->getGroupingLevels()->setGroupingItem(2, "Branch1");
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "C2", "Leaf2"));
    $leaf = $chart->getChartData()->getCategories()->add($wb->getCell(0, "C3", "Leaf3"));
    $leaf->getGroupingLevels()->setGroupingItem(1, "Stem2");
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "C4", "Leaf4"));
    # الفرع 2
    $leaf = $chart->getChartData()->getCategories()->add($wb->getCell(0, "C5", "Leaf5"));
    $leaf->getGroupingLevels()->setGroupingItem(1, "Stem3");
    $leaf->getGroupingLevels()->setGroupingItem(2, "Branch2");
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "C6", "Leaf6"));
    $leaf = $chart->getChartData()->getCategories()->add($wb->getCell(0, "C7", "Leaf7"));
    $leaf->getGroupingLevels()->setGroupingItem(1, "Stem4");
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "C8", "Leaf8"));
    $series = $chart->getChartData()->getSeries()->add(ChartType::Sunburst);
    $series->getLabels()->getDefaultDataLabelFormat()->setShowCategoryName(true);
    $series->getDataPoints()->addDataPointForSunburstSeries($wb->getCell(0, "D1", 4));
    $series->getDataPoints()->addDataPointForSunburstSeries($wb->getCell(0, "D2", 5));
    $series->getDataPoints()->addDataPointForSunburstSeries($wb->getCell(0, "D3", 3));
    $series->getDataPoints()->addDataPointForSunburstSeries($wb->getCell(0, "D4", 6));
    $series->getDataPoints()->addDataPointForSunburstSeries($wb->getCell(0, "D5", 9));
    $series->getDataPoints()->addDataPointForSunburstSeries($wb->getCell(0, "D6", 9));
    $series->getDataPoints()->addDataPointForSunburstSeries($wb->getCell(0, "D7", 4));
    $series->getDataPoints()->addDataPointForSunburstSeries($wb->getCell(0, "D8", 3));
    $pres->save("Sunburst.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

إنشاء مخططات توزيعية

خطوات: إنشاء مخطط توزيعي | خطوات: إنشاء مخطط PowerPoint توزيعي | خطوات: إنشاء مخطط عرض تقديمي توزيعي في PowerPoint

  1. إنشاء مثيل من الفئة Presentation.
  2. الحصول على مرجع الشريحة عبر فهرستها.
  3. إضافة مخطط مع بيانات افتراضية والنوع المطلوب (ChartType.Histogram).
  4. الوصول إلى ورقة عمل بيانات المخطط IChartDataWorkbook.
  5. مسح السلاسل والفئات الافتراضية.
  6. إضافة سلاسل وفئات جديدة.
  7. كتابة العرض التقديمي المعدل إلى ملف PPTX.

هذا المثال PHP يوضح كيفية إنشاء مخطط توزيعي:

  $pres = new Presentation();
  $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::Histogram, 50, 50, 500, 400);
  $chart->getChartData()->getCategories()->clear();
  $chart->getChartData()->getSeries()->clear();
  $wb = $chart->getChartData()->getChartDataWorkbook();
  $wb->clear(0);
  $series = $chart->getChartData()->getSeries()->add(ChartType::Histogram);
  $series->getDataPoints()->addDataPointForHistogramSeries($wb->getCell(0, "A1", 15));
  $series->getDataPoints()->addDataPointForHistogramSeries($wb->getCell(0, "A2", -41));
  $series->getDataPoints()->addDataPointForHistogramSeries($wb->getCell(0, "A3", 16));
  $series->getDataPoints()->addDataPointForHistogramSeries($wb->getCell(0, "A4", 10));
  $series->getDataPoints()->addDataPointForHistogramSeries($wb->getCell(0, "A5", -23));
  $series->getDataPoints()->addDataPointForHistogramSeries($wb->getCell(0, "A6", 16));
  $chart->getAxes()->getHorizontalAxis()->setAggregationType(AxisAggregationType::Automatic);

إنشاء مخططات رادارية

خطوات: إنشاء مخطط راداري | خطوات: إنشاء مخطط PowerPoint راداري | خطوات: إنشاء مخطط عرض تقديمي راداري في PowerPoint

  1. إنشاء مثيل من الفئة Presentation.
  2. الحصول على مرجع الشريحة عبر فهرستها.
  3. إضافة مخطط مع بعض البيانات وتحديد نوع المخطط المفضل (ChartType::Radar في هذه الحالة).
  4. كتابة العرض التقديمي المعدل إلى ملف PPTX.

هذا المثال PHP يوضح كيفية إنشاء مخطط راداري:

  $pres = new Presentation();
  try {
    $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::Radar, 20, 20, 400, 300);
    $pres->save("Radar-chart.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

إنشاء مخططات متعددة الفئات

خطوات: إنشاء مخطط متعدد الفئات | خطوات: إنشاء مخطط PowerPoint متعدد الفئات | خطوات: إنشاء مخطط عرض تقديمي متعدد الفئات في PowerPoint

  1. إنشاء مثيل من الفئة Presentation.
  2. الحصول على مرجع الشريحة عبر فهرستها.
  3. إضافة مخطط مع بيانات افتراضية والنوع المطلوب (ChartType.ClusteredColumn).
  4. الوصول إلى ورقة عمل بيانات المخطط IChartDataWorkbook.
  5. مسح السلاسل والفئات الافتراضية.
  6. إضافة سلاسل وفئات جديدة.
  7. إضافة بيانات مخطط جديدة للسلسلة.
  8. كتابة العرض التقديمي المعدل إلى ملف PPTX.

هذا المثال PHP يوضح كيفية إنشاء مخطط متعدد الفئات:

  $pres = new Presentation();
  try {
    $ch = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::ClusteredColumn, 100, 100, 600, 450);
    $ch->getChartData()->getSeries()->clear();
    $ch->getChartData()->getCategories()->clear();
    $fact = $ch->getChartData()->getChartDataWorkbook();
    $fact->clear(0);
    $defaultWorksheetIndex = 0;
    $category = $ch->getChartData()->getCategories()->add($fact->getCell(0, "c2", "A"));
    $category->getGroupingLevels()->setGroupingItem(1, "Group1");
    $category = $ch->getChartData()->getCategories()->add($fact->getCell(0, "c3", "B"));
    $category = $ch->getChartData()->getCategories()->add($fact->getCell(0, "c4", "C"));
    $category->getGroupingLevels()->setGroupingItem(1, "Group2");
    $category = $ch->getChartData()->getCategories()->add($fact->getCell(0, "c5", "D"));
    $category = $ch->getChartData()->getCategories()->add($fact->getCell(0, "c6", "E"));
    $category->getGroupingLevels()->setGroupingItem(1, "Group3");
    $category = $ch->getChartData()->getCategories()->add($fact->getCell(0, "c7", "F"));
    $category = $ch->getChartData()->getCategories()->add($fact->getCell(0, "c8", "G"));
    $category->getGroupingLevels()->setGroupingItem(1, "Group4");
    $category = $ch->getChartData()->getCategories()->add($fact->getCell(0, "c9", "H"));
    # إضافة سلسلة
    $series = $ch->getChartData()->getSeries()->add($fact->getCell(0, "D1", "Series 1"), ChartType::ClusteredColumn);
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, "D2", 10));
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, "D3", 20));
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, "D4", 30));
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, "D5", 40));
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, "D6", 50));
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, "D7", 60));
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, "D8", 70));
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, "D9", 80));
    # حفظ العرض التقديمي مع المخطط
    $pres->save("AsposeChart_out.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

إنشاء مخططات خريطة

مخطط الخريطة هو تصور لمنطقة تحتوي على بيانات. تُستخدم مخططات الخريطة لمقارنة البيانات أو القيم عبر المناطق الجغرافية.

خطوات: إنشاء مخطط خريطة | خطوات: إنشاء مخطط PowerPoint خريطة | خطوات: إنشاء مخطط عرض تقديمي خريطة في PowerPoint

هذا المثال PHP يوضح كيفية إنشاء مخطط خريطة:

  $pres = new Presentation();
  try {
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::Map, 50, 50, 500, 400);
    $pres->save("mapChart.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

إنشاء مخططات مركبة

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

The combination chart

الكود PHP التالي يوضح كيفية إنشاء المخطط المركب الموضح أعلاه في عرض PowerPoint:

function createComboChart() {
    $presentation = new Presentation();
    $slide = $presentation->getSlides()->get_Item(0);
    try {
        $chart = createChartWithFirstSeries($slide);

        addSecondSeriesToChart($chart);
        addThirdSeriesToChart($chart);

        setPrimaryAxesFormat($chart);
        setSecondaryAxesFormat($chart);

        $presentation->save("combo-chart.pptx", SaveFormat::Pptx);
    } finally {
        $presentation->dispose();
    }
}

function createChartWithFirstSeries($slide) {
    $chart = $slide->getShapes()->addChart(ChartType::ClusteredColumn, 50, 50, 600, 4

    // ضبط عنوان المخطط.
    $chart->setTitle(true);
    $chart->getChartTitle()->addTextFrameForOverriding("Chart Title");
    $chart->getChartTitle()->setOverlay(false);
    $titleParagraph = $chart->getChartTitle()->getTextFrameForOverriding()->getParagraphs()->get_Item(0);
    $titleFormat = $titleParagraph->getParagraphFormat()->getDefaultPortionFormat();
    $titleFormat->setFontBold(NullableBool::False);
    $titleFormat->setFontHeight(18);
    
    // ضبط وسيلة إيضاح المخطط.
    $chart->getLegend()->setPosition(LegendPositionType::Bottom);
    $chart->getLegend()->getTextFormat()->getPortionFormat()->setFontHeight(12);

    // حذف السلاسل والفئات المولدة افتراضيًا.
    $chart->getChartData()->getSeries()->clear();
    $chart->getChartData()->getCategories()->clear();

    $worksheetIndex = 0;
    $workbook = $chart->getChartData()->getChartDataWorkbook();

    // إضافة فئات جديدة.
    $chart->getChartData()->getCategories()->add($workbook->getCell($worksheetIndex, 1, 0, "Category 1"));
    $chart->getChartData()->getCategories()->add($workbook->getCell($worksheetIndex, 2, 0, "Category 2"));
    $chart->getChartData()->getCategories()->add($workbook->getCell($worksheetIndex, 3, 0, "Category 3"));
    $chart->getChartData()->getCategories()->add($workbook->getCell($worksheetIndex, 4, 0, "Category 4"));

    // إضافة السلسلة الأولى.
    $seriesNameCell = $workbook->getCell($worksheetIndex, 0, 1, "Series 1");
    $series = $chart->getChartData()->getSeries()->add($seriesNameCell, $chart->getType());

    $series->getParentSeriesGroup()->setOverlap(-25);
    $series->getParentSeriesGroup()->setGapWidth(220);

    $series->getDataPoints()->addDataPointForBarSeries($workbook->getCell($worksheetIndex, 1, 1, 4.3));
    $series->getDataPoints()->addDataPointForBarSeries($workbook->getCell($worksheetIndex, 2, 1, 2.5));
    $series->getDataPoints()->addDataPointForBarSeries($workbook->getCell($worksheetIndex, 3, 1, 3.5));
    $series->getDataPoints()->addDataPointForBarSeries($workbook->getCell($worksheetIndex, 4, 1, 4.5));

    return $chart;
}

function addSecondSeriesToChart($chart) {
    $workbook = $chart->getChartData()->getChartDataWorkbook();
    $worksheetIndex = 0;

    $seriesNameCell = $workbook->getCell($worksheetIndex, 0, 2, "Series 2");
    $series = $chart->getChartData()->getSeries()->add($seriesNameCell, ChartType::ClusteredColumn);

    $series->getParentSeriesGroup()->setOverlap(-25);
    $series->getParentSeriesGroup()->setGapWidth(220);

    $series->getDataPoints()->addDataPointForBarSeries($workbook->getCell($worksheetIndex, 1, 2, 2.4));
    $series->getDataPoints()->addDataPointForBarSeries($workbook->getCell($worksheetIndex, 2, 2, 4.4));
    $series->getDataPoints()->addDataPointForBarSeries($workbook->getCell($worksheetIndex, 3, 2, 1.8));
    $series->getDataPoints()->addDataPointForBarSeries($workbook->getCell($worksheetIndex, 4, 2, 2.8));
}

function addThirdSeriesToChart($chart) {
    $workbook = $chart->getChartData()->getChartDataWorkbook();
    $worksheetIndex = 0;

    $seriesNameCell = $workbook->getCell($worksheetIndex, 0, 3, "Series 3");
    $series = $chart->getChartData()->getSeries()->add($seriesNameCell, ChartType::Line);

    $series->getDataPoints()->addDataPointForLineSeries($workbook->getCell($worksheetIndex, 1, 3, 2.0));
    $series->getDataPoints()->addDataPointForLineSeries($workbook->getCell($worksheetIndex, 2, 3, 2.0));
    $series->getDataPoints()->addDataPointForLineSeries($workbook->getCell($worksheetIndex, 3, 3, 3.0));
    $series->getDataPoints()->addDataPointForLineSeries($workbook->getCell($worksheetIndex, 4, 3, 5.0));

    $series->setPlotOnSecondAxis(true);
}

function setPrimaryAxesFormat($chart) {
    // ضبط المحور الأفقي.
    $horizontalAxis = $chart->getAxes()->getHorizontalAxis();
    $horizontalAxis->getTextFormat()->getPortionFormat()->setFontHeight(12);
    $horizontalAxis->getFormat()->getLine()->getFillFormat()->setFillType(FillType::NoFill);

    setAxisTitle($horizontalAxis, "X Axis");

    // ضبط المحور العمودي.
    $verticalAxis = $chart->getAxes()->getVerticalAxis();
    $verticalAxis->getTextFormat()->getPortionFormat()->setFontHeight(12);
    $verticalAxis->getFormat()->getLine()->getFillFormat()->setFillType(FillType::NoFill);

    setAxisTitle($verticalAxis, "Y Axis 1");

    // ضبط لون خطوط الشبكة العمودية الرئيسية.
    $majorGridLinesFormat = $verticalAxis->getMajorGridLinesFormat()->getLine()->getFillFormat();
    $majorGridLinesFormat->setFillType(FillType::Solid);
    $majorGridLinesFormat->getSolidFillColor()->setColor(new java("java.awt.Color", 217, 217, 217));
}

function setSecondaryAxesFormat($chart) {
    // ضبط المحور الأفقي الثانوي.
    $secondaryHorizontalAxis = $chart->getAxes()->getSecondaryHorizontalAxis();
    $secondaryHorizontalAxis->setPosition(AxisPositionType::Bottom);
    $secondaryHorizontalAxis->setCrossType(CrossesType::Maximum);
    $secondaryHorizontalAxis->setVisible(false);
    $secondaryHorizontalAxis->getMajorGridLinesFormat()->getLine()->getFillFormat()->setFillType(FillType::NoFill);
    $secondaryHorizontalAxis->getMinorGridLinesFormat()->getLine()->getFillFormat()->setFillType(FillType::NoFill);

    // ضبط المحور العمودي الثانوي.
    $secondaryVerticalAxis = $chart->getAxes()->getSecondaryVerticalAxis();
    $secondaryVerticalAxis->setPosition(AxisPositionType::Right);
    $secondaryVerticalAxis->getTextFormat()->getPortionFormat()->setFontHeight(12);
    $secondaryVerticalAxis->getFormat()->getLine()->getFillFormat()->setFillType(FillType::NoFill);
    $secondaryVerticalAxis->getMajorGridLinesFormat()->getLine()->getFillFormat()->setFillType(FillType::NoFill);
    $secondaryVerticalAxis->getMinorGridLinesFormat()->getLine()->getFillFormat()->setFillType(FillType::NoFill);

    setAxisTitle($secondaryVerticalAxis, "Y Axis 2");
}

function setAxisTitle($axis, $axisTitle) {
    $axis->setTitle(true);
    $axis->getTitle()->setOverlay(false);
    $titleParagraph = $axis->getTitle()->addTextFrameForOverriding($axisTitle)->getParagraphs()->get_Item(0);
    $titleFormat = $titleParagraph->getParagraphFormat()->getDefaultPortionFormat();
    $titleFormat->setFontBold(NullableBool::False);
    $titleFormat->setFontHeight(12);
}

تحديث المخططات

خطوات: تحديث مخطط PowerPoint | خطوات: تحديث مخطط عرض تقديمي | خطوات: تحديث مخطط عرض تقديمي في PowerPoint

  1. إنشاء كائن من الفئة Presentation الذي يمثل العرض التقديمي الذي يحتوي على المخطط المراد تحديثه.
  2. الحصول على مرجع شريحة باستخدام فهرستها.
  3. استعراض جميع الأشكال للعثور على المخطط المطلوب.
  4. الوصول إلى ورقة عمل بيانات المخطط.
  5. تعديل بيانات سلسلة المخطط بتغيير قيم السلسلة.
  6. إضافة سلسلة جديدة وتعبئة البيانات فيها.
  7. كتابة العرض التقديمي المعدل كملف PPTX.

هذا الكود PHP يوضح كيفية تحديث مخطط:

  $pres = new Presentation();
  try {
    # الوصول إلى الشريحة الأولى
    $sld = $pres->getSlides()->get_Item(0);
    # الحصول على المخطط ببيانات افتراضية
    $chart = $sld->getShapes()->get_Item(0);
    # تعيين فهرس ورقة بيانات المخطط
    $defaultWorksheetIndex = 0;
    # الحصول على ورقة عمل بيانات المخطط
    $fact = $chart->getChartData()->getChartDataWorkbook();
    # تغيير اسم فئة المخطط
    $fact->getCell($defaultWorksheetIndex, 1, 0, "Modified Category 1");
    $fact->getCell($defaultWorksheetIndex, 2, 0, "Modified Category 2");
    # أخذ السلسلة الأولى للمخطط
    $series = $chart->getChartData()->getSeries()->get_Item(0);
    # الآن يتم تحديث بيانات السلسلة
    $fact->getCell($defaultWorksheetIndex, 0, 1, "New_Series1");// تعديل اسم السلسلة

    $series->getDataPoints()->get_Item(0)->getValue()->setData(90);
    $series->getDataPoints()->get_Item(1)->getValue()->setData(123);
    $series->getDataPoints()->get_Item(2)->getValue()->setData(44);
    # أخذ السلسلة الثانية للمخطط
    $series = $chart->getChartData()->getSeries()->get_Item(1);
    # الآن يتم تحديث بيانات السلسلة
    $fact->getCell($defaultWorksheetIndex, 0, 2, "New_Series2");// تعديل اسم السلسلة

    $series->getDataPoints()->get_Item(0)->getValue()->setData(23);
    $series->getDataPoints()->get_Item(1)->getValue()->setData(67);
    $series->getDataPoints()->get_Item(2)->getValue()->setData(99);
    # الآن، إضافة سلسلة جديدة
    $chart->getChartData()->getSeries()->add($fact->getCell($defaultWorksheetIndex, 0, 3, "Series 3"), $chart->getType());
    # أخذ السلسلة الثالثة للمخطط
    $series = $chart->getChartData()->getSeries()->get_Item(2);
    # الآن يتم تعبئة بيانات السلسلة
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, 1, 3, 20));
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, 2, 3, 50));
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, 3, 3, 30));
    $chart->setType(ChartType::ClusteredCylinder);
    # حفظ العرض التقديمي مع المخطط
    $pres->save("AsposeChartModified_out.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

تحديد نطاق البيانات للمخططات

لتحديد نطاق البيانات لمخطط، نفّذ ما يلي:

  1. إنشاء كائن من الفئة Presentation التي تمثل العرض التقديمي الذي يحتوي على المخطط.
  2. الحصول على مرجع شريحة عبر فهرستها.
  3. استعراض جميع الأشكال للعثور على المخطط المطلوب.
  4. الوصول إلى بيانات المخطط وتحديد النطاق.
  5. حفظ العرض التقديمي المعدل كملف PPTX.

هذا الكود PHP يوضح كيفية تحديد نطاق البيانات لمخطط:

  $pres = new Presentation();
  try {
    $slide = $pres->getSlides()->get_Item(0);
    $chart = $slide->getShapes()->get_Item(0);
    $chart->getChartData()->setRange("Sheet1!A1:B4");
    $pres->save("SetDataRange_out.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

استخدام العلامات الافتراضية في المخططات

عند استخدام علامة افتراضية في المخططات، يحصل كل سلسلة مخطط على رموز علامات افتراضية مختلفة تلقائيًا.

هذا الكود PHP يوضح كيفية تعيين علامة سلسلة مخطط تلقائيًا:

  $pres = new Presentation();
  try {
    $slide = $pres->getSlides()->get_Item(0);
    $chart = $slide->getShapes()->addChart(ChartType::LineWithMarkers, 10, 10, 400, 400);
    $chart->getChartData()->getSeries()->clear();
    $chart->getChartData()->getCategories()->clear();
    $fact = $chart->getChartData()->getChartDataWorkbook();
    $chart->getChartData()->getSeries()->add($fact->getCell(0, 0, 1, "Series 1"), $chart->getType());
    $series = $chart->getChartData()->getSeries()->get_Item(0);
    $chart->getChartData()->getCategories()->add($fact->getCell(0, 1, 0, "C1"));
    $series->getDataPoints()->addDataPointForLineSeries($fact->getCell(0, 1, 1, 24));
    $chart->getChartData()->getCategories()->add($fact->getCell(0, 2, 0, "C2"));
    $series->getDataPoints()->addDataPointForLineSeries($fact->getCell(0, 2, 1, 23));
    $chart->getChartData()->getCategories()->add($fact->getCell(0, 3, 0, "C3"));
    $series->getDataPoints()->addDataPointForLineSeries($fact->getCell(0, 3, 1, -10));
    $chart->getChartData()->getCategories()->add($fact->getCell(0, 4, 0, "C4"));
    $series->getDataPoints()->addDataPointForLineSeries($fact->getCell(0, 4, 1, null));
    $chart->getChartData()->getSeries()->add($fact->getCell(0, 0, 2, "Series 2"), $chart->getType());
    # أخذ السلسلة الثانية للمخطط
    $series2 = $chart->getChartData()->getSeries()->get_Item(1);
    # الآن يتم تعبئة بيانات السلسلة
    $series2->getDataPoints()->addDataPointForLineSeries($fact->getCell(0, 1, 2, 30));
    $series2->getDataPoints()->addDataPointForLineSeries($fact->getCell(0, 2, 2, 10));
    $series2->getDataPoints()->addDataPointForLineSeries($fact->getCell(0, 3, 2, 60));
    $series2->getDataPoints()->addDataPointForLineSeries($fact->getCell(0, 4, 2, 40));
    $chart->setLegend(true);
    $chart->getLegend()->setOverlay(false);
    $pres->save("DefaultMarkersInChart.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }