تجميع الحقول المحورية في الجدول المحوري

سيناريوهات الاستخدام المحتملة

  • يُعد تجميع الحقول المحورية مفيدًا عندما يحتوي حقل الصفوف أو حقل الأعمدة في الجدول المحوري على عناصر متعددة ومميزة، مثل حقل تاريخ يحتوي على مئات التواريخ أو حقل رقمي يحتوي على قيم متفرقة كثيرة. يدمج التجميع هذه العناصر في أقسام ذات معنى: التواريخ إلى أشهر وأرباع وسنوات، والأرقام إلى نطاقات مثل 0-1 و2-3 و4-5. يجعل ذلك الجدول المحوري الكبير مضغوطًا وأسهل في التحليل. يوفر Aspose.Cells هذه الإمكانية من خلال طريقة PivotField.group() (التجميع التلقائي حسب نوع البيانات) وPivotField.group(PivotFieldGroupOptions) (خيارات التجميع المخصصة).
  • يحوّل تجميع التواريخ التواريخ الفردية إلى فترات أكبر، مثل الأيام والأشهر والأرباع والسنوات، ويُنشئ تسلسلًا هرميًا زمنيًا (على سبيل المثال السنوات، الأرباع، الأشهر). تصبح الاتجاهات عبر الوقت مرئية بنظرة واحدة، وتصبح كل مستوى من الفترات حقلاً محوريًا خاصًا به في منطقة الصفوف أو الأعمدة في الجدول المحوري.
  • يتوفر التجميع فقط للحقول الموضوعة في منطقة الصفوف (ROW) أو الأعمدة (COLUMN) في الجدول المحوري. لا يمكن تجميع حقل البيانات (القيمة) مباشرة. لتجميعه يجب أولًا إضافته إلى منطقة الصفوف أو الأعمدة في الجدول المحوري.

تجميع الحقول المحورية تلقائيًا

يفحص التحميل الزائد PivotField.group() الذي لا يقبل معاملات نوع بيانات الحقل ويجمعه تلقائيًا. الحقل الذي يحتوي على تواريخ فقط (وفراغات) يُجمع حسب الأشهر. والحقل الذي يحتوي على أرقام فقط (وفراغات) يُجمع إلى نطاقات رقمية باستخدام فاصل تلقائي.

import com.aspose.cells.*;
Workbook wb = new Workbook("sampleGroupPivotFieldsInPivotTable.xlsx");
PivotTable pt = wb.getWorksheets().get(1).getPivotTables().get(0);
PivotField field = pt.getRowFields().get(0);
field.group();
pt.calculateData();
wb.save("outputAutoGroupPivotField.xlsx");

تجميع الحقول المحورية بخيارات مخصصة

توفر فئة PivotFieldGroupOptions تكوين التجميع المخصص. لحقول التواريخ، عيّن startDate وendDate وgroupTypes. أما للحقول الرقمية، فعليك تعيين startNumber وendNumber وinterval. تتحكم الخاصية newPivotField فيما إذا كان التجميع ينشئ حقولاً محورية جديدة بجانب الحقل الأصلي (راجع قسم الملاحظة في نهاية هذه المقالة).

تجميع حقل تاريخ حسب الأشهر والأرباع

يجمع المثال التالي حقل صف التاريخ في الجدول المحوري النموذجي حسب الأشهر والأرباع بين تاريخ بداية ونهاية. يقوم الكود بتحميل ملف Excel النموذجي، وتنفيذ التجميع، وحساب بيانات الجدول المحوري، وحفظ النتيجة المجمعة. تُظهر لقطة الشاشة التأثير: أصبح حقل صف التاريخ الآن مُجمعًا حسب الأرباع والأشهر. لاحظ أن ترتيب القيم في options.groupTypes يتم تجاهله. بغض النظر عن الترتيب الذي تُسرد به أنواع المجموعات، يتم دائمًا عرض الحقول المجمعة من أكبر فترة إلى أصغرها: السنوات، الأرباع، الأشهر، الأيام، الساعات، الدقائق، الثواني. في هذا المثال تم ذكر الأشهر قبل الأرباع في options.groupTypes، ومع ذلك يتم عرض الأرباع كمستوى خارجي والأشهر كمستوى داخلي.

import com.aspose.cells.*;
Workbook wb = new Workbook("sampleGroupPivotFieldsInPivotTable.xlsx");
PivotTable pt = wb.getWorksheets().get(1).getPivotTables().get(0);
PivotFieldGroupOptions options = new PivotFieldGroupOptions();
options.setStartDate(new com.aspose.cells.DateTime(2008, 1, 1));
options.setEndDate(new com.aspose.cells.DateTime(2008, 9, 5));
options.setGroupTypes(new int[] { PivotGroupByType.MONTHS, PivotGroupByType.QUARTERS });
pt.getRowFields().get(0).group(options);
pt.calculateData();
wb.save("outputGroupPivotFieldsInPivotTable.xlsx");

الجدول المحوري مُجمع حسب الأشهر والأرباع

تجميع حقل رقمي إلى نطاقات

يعد FieldTwo في الجدول المحوري النموذجي حقل بيانات (قيمة) في البداية. نظرًا لأن التجميع متاح فقط لحقول الصفوف أو الأعمدة، يستدعي الكود أولًا PivotTable.addFieldToArea(PivotFieldType.ROW, "FieldTwo") لنقل FieldTwo إلى منطقة الصفوف، ثم يُحدّث الجدول المحوري، ثم يجمع الحقل الرقمي إلى النطاقات 0-1 و2-3 و4-5 باستخدام startNumber = 0 وendNumber = 5 وinterval = 2.

import com.aspose.cells.*;
// تحميل المصنف النموذجي
Workbook wb = new Workbook("sampleGroupPivotFieldsInPivotTable.xlsx");
// الوصول إلى ورقة العمل الثانية وجدول المحور الخاص بها
PivotTable pt = wb.getWorksheets().get(1).getPivotTables().get(0);
// FieldTwo هو حقل بيانات: انقله إلى منطقة الصفوف أولاً،
// لأنه يمكن تجميع حقول الصفوف/الأعمدة فقط
pt.addFieldToArea(PivotFieldType.ROW, "FieldTwo");
pt.calculateData();
// تجميع الحقل الرقمي إلى النطاقات 0-1، 2-3، 4-5
PivotFieldGroupOptions options = new PivotFieldGroupOptions();
options.setStartNumber(0);
options.setEndNumber(5);
options.setInterval(2);
pt.getRowFields().get(1).group(options);
// حساب بيانات جدول المحور وحفظ ملف الإخراج
pt.calculateData();
wb.save("outputNumberGroupPivotField.xlsx");

ملاحظة

مقالات ذات صلة