Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
يصعب قراءة الجدول المحوري الذي يسرد جميع عناصر حقل الصف عندما يحتوي الحقل على عشرات العناصر. يحتفظ تقرير أعلى 10 بالعناصر الأعلى أو الأدنى تصنيفًا فقط، وهو ما تحتاجه تقارير الترتيب تحديدًا، مثل «أفضل 5 منتجات حسب الإيرادات» أو «أدنى 3 مناطق حسب عدد المبيعات». يدعم Aspose.Cells آليتين لذلك، تقابلان جيلين من إصدارات Microsoft Excel.
PivotField.top_10_auto_show(). هذا هو الإعداد الكلاسيكي «عرض أعلى/أسفل N عناصر» المخزن مباشرةً على الحقل المحوري. يعمل في جميع إصدارات Excel، القديمة والجديدة، لأنه جزء من تنسيق الجدول المحوري الأصلي.PivotField.filter_top10(). هذا هو عامل تصفية القيم الحديث المعروف باسم «أعلى 10»، الموجود ضمن «مرشحات القيم» في قائمة الحقل. يُخزَّن في صورة كائن PivotFilter مرتبط بالحقل، ويوفر ترتيبًا قائمًا على عدد العناصر أو النسبة المئوية.يُهيَّأ الإعداد الكلاسيكي للعرض التلقائي باستدعاء واحد لطريقة PivotField.top_10_auto_show(bool is_auto_show, bool is_top, int count, int rank_by):
is_auto_show — يفعّل إعداد العرض التلقائي على الحقل أو يعطله.is_top — إذا كانت القيمة True، فيتم الاحتفاظ بالعناصر الأعلى تصنيفًا (أعلى)؛ وإذا كانت False، فيتم الاحتفاظ بالعناصر الأدنى (أسفل).count — عدد العناصر التي يُحتفظ بها، مثل 10 لتقرير كلاسيكي لأعلى 10.rank_by — الفهرس المبني على الصفر لحقل البيانات الذي تُستخدم قيمه لترتيب العناصر. مرّر -1 لترتيب العناصر وفق الحقل نفسه.
يمكن أن يتم الترتيب بواسطة حقل قيم أو بواسطة الحقل نفسه. وفيما يلي عرضان طبيعيان لهذا الإعداد.رتّب عناصر حقل الصف وفق حقل قيم عادي مثل Sum of Sales. ينشئ المثال التالي جدولًا محوريًا يحتوي على حقل صف واحد (Sport) وحقل بيانات واحد (Sales)، ثم يعرض أعلى رياضتين من حيث المبيعات. قيمة rank_by هي 0 لأن Sum of Sales هو حقل البيانات الموجود عند الفهرس 0.
import aspose.cells as ac
from aspose.cells.pivot import PivotFieldType
workbook = ac.Workbook()
worksheet = workbook.worksheets[0]
worksheet.cells.get("A1").put_value("Sport")
worksheet.cells.get("B1").put_value("Quarter")
worksheet.cells.get("C1").put_value("Sales")
sports = ["Golf", "Tennis", "Rugby", "Cricket", "Boxing"]
row = 2
for sport in sports:
for quarter in range(1, 4):
worksheet.cells.get(row, 0).put_value(sport)
worksheet.cells.get(row, 1).put_value("Qtr" + str(quarter))
worksheet.cells.get(row, 2).put_value(1000 + 777 * row)
row += 1
pivot_table = worksheet.pivot_tables.add("A1:C16", 2, 5)
pivot_table.add_field_to_area(PivotFieldType.ROW, "Sport")
pivot_table.add_field_to_area(PivotFieldType.DATA, "Sales")
pivot_table.calculate_data()
sport_field = pivot_table.row_fields[0]
# إظهار أفضل عنصرين مرتبين حسب "مجموع المبيعات" (فهرس حقل البيانات 0)
sport_field.top_10_auto_show(True, True, 2, 0)
pivot_table.calculate_data()
workbook.save("output-top10-by-value-field.xlsx")
يمكن أيضًا ترتيب الحقل حسب نفسه — مرّر -1 كقيمة لـ rank_by. لا يحتاج هذا الأسلوب إلى حقل بيانات إضافي؛ يكفي أن يكون الحقل في منطقة الصفوف (أو الأعمدة). يعرض المثال التالي أدنى 3 رياضات مرتبة وفق الحقل نفسه. عند حفظ هذا الإعداد، لا تُدرج سمة rank_by في XML للجدول المحوري لأن -1 هي القيمة الافتراضية للتنسيق، وتقرأ top_10_auto_show_settings.rank_by القيمة -1.
import aspose.cells as ac
from aspose.cells.pivot import PivotFieldType
workbook = ac.Workbook()
worksheet = workbook.worksheets[0]
worksheet.cells.get("A1").put_value("Sport")
worksheet.cells.get("B1").put_value("Quarter")
worksheet.cells.get("C1").put_value("Sales")
sports = ["Golf", "Tennis", "Rugby", "Cricket", "Boxing"]
row = 2
for sport in sports:
for quarter in range(1, 4):
worksheet.cells.get(row, 0).put_value(sport)
worksheet.cells.get(row, 1).put_value("Qtr" + str(quarter))
worksheet.cells.get(row, 2).put_value(1000 + 777 * row)
row += 1
pivot_table = worksheet.pivot_tables.add("A1:C16", 2, 5)
pivot_table.add_field_to_area(PivotFieldType.ROW, "Sport")
pivot_table.add_field_to_area(PivotFieldType.DATA, "Sales")
pivot_table.calculate_data()
sport_field = pivot_table.row_fields[0]
sport_field.top_10_auto_show(True, False, 3, -1)
pivot_table.calculate_data()
workbook.save("output-top10-by-field-itself.xlsx")
تعيد الخاصية PivotField.top_10_auto_show_settings كائن PivotFieldTop10AutoShowSettings الذي يعرض خيارات العرض التلقائي المخزنة حاليًا على الحقل. استخدمه لفحص كيفية عرض العناصر في مصنف موجود أو في جدول محوري تهيئته للتو، بما في ذلك المصنفات المحمّلة من ملف.
import aspose.cells as ac
workbook = ac.Workbook("output-top10-by-value-field.xlsx")
pivot_table = workbook.worksheets[0].pivot_tables[0]
sport_field = pivot_table.row_fields[0]
settings = sport_field.top_10_auto_show_settings
print("AutoShow enabled: " + str(settings.is_auto_show))
print("Direction: " + ("Top" if settings.is_top else "Bottom"))
print("Item count: " + str(settings.auto_show_count))
print("Ranking data field index: " + str(settings.rank_by))
تقابل الخصائص الأربع سمات العرض التلقائي الكلاسيكية المكتوبة في XML للجدول المحوري (autoShow وtopAutoShow وitemPageCount وrankBy)، لذا تكون القيم المقروءة هي القيم التي ستطبّقها جميع إصدارات Excel.
is_auto_show وis_ascend_show وauto_show_count وauto_show_field على PivotField معلَّمة كمهملة. استخدم كائن top_10_auto_show_settings بدلًا منها: تصبح is_auto_show هي top_10_auto_show_settings.is_auto_show، وتصبح is_ascend_show هي top_10_auto_show_settings.is_top، وتصبح auto_show_count هي top_10_auto_show_settings.auto_show_count، وتصبح auto_show_field هي top_10_auto_show_settings.rank_by. طريقة top_10_auto_show() نفسها هي الطريقة المدعومة لتغيير الإعدادات.top_10_auto_show مع حقول الصفوف والأعمدة. لا يمكن ترتيب حقل موجود فقط في منطقة الصفحات (التصفية) بهذه الطريقة لأن عناصره لا تُدرج ضمن جسم الجدول المحوري.تعرض إصدارات Excel الحديثة خيار «أعلى 10» كعامل تصفية للقيم في قائمة الحقل («مرشحات القيم»، «أعلى 10…»). وينمذج Aspose.Cells هذه الميزة باستخدام طريقة PivotField.filter_top10(int value_field_index, PivotFilterType type, bool is_top, int item_count)، التي تعيد كائن PivotFilter الذي تم إنشاؤه:
value_field_index — الفهرس المبني على الصفر لحقل البيانات الذي تُستخدم قيمه المجمّعة لترتيب العناصر.type — يحدد معنى item_count. يحتفظ PivotFilterType.COUNT بعدد ثابت من العناصر (خيار «العناصر» في مربع الحوار). ويحتفظ PivotFilterType.PERCENT بنسبة مئوية من العناصر، لذا تكون item_count هي النسبة نفسها؛ أي أن القيمة 30 تحتفظ بأعلى 30 في المئة. ويرتب PivotFilterType.SUM العناصر وفق التغطية التراكمية للقيم.is_top — True للأعلى وFalse للأسفل.item_count — القيمة N في «أعلى N»؛ وتعتمد وحدتها على type.import aspose.cells as ac
from aspose.cells.pivot import PivotFieldType, PivotFilterType
workbook = ac.Workbook()
worksheet = workbook.worksheets[0]
worksheet.cells.get("A1").put_value("Sport")
worksheet.cells.get("B1").put_value("Quarter")
worksheet.cells.get("C1").put_value("Sales")
sports = ["Golf", "Tennis", "Rugby", "Cricket", "Boxing"]
row = 2
for sport in sports:
for quarter in range(1, 4):
worksheet.cells.get(row, 0).put_value(sport)
worksheet.cells.get(row, 1).put_value("Qtr" + str(quarter))
worksheet.cells.get(row, 2).put_value(1000 + 777 * row)
row += 1
pivot_table = worksheet.pivot_tables.add("A1:C16", 2, 5)
pivot_table.add_field_to_area(PivotFieldType.ROW, "Sport")
pivot_table.add_field_to_area(PivotFieldType.DATA, "Sales")
pivot_table.calculate_data()
sport_field = pivot_table.row_fields[0]
# مرشح أعلى 10 — الاحتفاظ بأعلى عنصرين حسب "مجموع المبيعات" (فهرس حقل البيانات 0)
filter = sport_field.filter_top10(0, PivotFilterType.COUNT, True, 2)
# بدلاً من ذلك، يمكن استخدام مرشح قائم على النسبة للاحتفاظ بأعلى 30٪ من العناصر:
# sport_field.filter_top10(0, PivotFilterType.PERCENT, True, 30)
pivot_table.pivot_cache.refresh()
pivot_table.calculate_data()
workbook.save("output-top10-filter.xlsx")
top_10_auto_show وfilter_top10 ميزتان منفصلتان. يكتب العرض التلقائي مجموعة سمات autoShow الكلاسيكية على الحقل المحوري، وتطبّقها جميع إصدارات Excel منذ Excel 97. ويكتب filter_top10 إدخالًا حديثًا من نوع PivotFilter، وهو ما يتطلب Excel 2007 أو إصدارًا أحدث. عند فتح مصنف في إصدار أقدم من Excel، يلجأ الجدول المحوري الذي يستخدم عامل التصفية الحديث إلى عرض جميع العناصر. بالنسبة إلى المستندات التي يجب أن تمر عبر دورة كاملة من الحفظ والفتح باستخدام أدوات الإصدارات القديمة، فضّل top_10_auto_show؛ أما في المصنفات الحديثة، ففضّل filter_top10 لأنه يتكامل مع عوامل تصفية القيم الأخرى.
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.