Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
يكشف الجدول المحوري في Microsoft Excel عن منطقة حقل صفحة مخصصة تقع فوق جسم الصف/العمود/البيانات في الجدول. يتم عرض هذه المنطقة كشريط من عناصر تحكم التصفية المنسدلة (واحد لكل حقل صفحة) وهي التي ينقر عليها المستخدمون النهائيون لتقطيع المحور بمعايير مثل السنة أو المنطقة. Aspose.Cells تصمم هذه المنطقة من خلال مجموعة PivotTable.PageFields وتعرض ثلاث خصائص تتحكم في كيفية عرض الشريط بصريًا:
PivotTable.PageFieldOrder (قيمة Aspose.Cells.PrintOrderType) تقرر ما إذا كانت حقول الصفحة الإضافية ستوضع بجانب الحقول الحالية أو أسفلها.PivotTable.PageFieldWrapCount تحدد عدد حقول الصفحة الموضوعة لكل صف أو عمود قبل الالتفاف.PivotTable.PageFields.Move(currIndex, destIndex) يعيد ترتيب حقول الصفحة دون تغيير وضع الترتيب.
تتناول هذه المقالة ثلاثة أمثلة على التعليمات البرمجية التي توضح كل عملية من هذه العمليات على مجموعة بيانات مشتركة، حتى تتمكن من مقارنة التخطيطات الناتجة جنبًا إلى جنب.تقوم الأمثلة الثلاثة أدناه بتحميل هذه الصفوف الثمانية من بيانات المبيعات في ورقة عمل باسم PivotData. تحتوي البيانات على مرشحين لحقول الصفحة (Year، Region)، ومرشح واحد لحقل الصف (Fruit)، ومقياس واحد (Amount)، مما يجعل شريط حقل الصفحة ذا مغزى للفحص.
| Fruit | Year | Region | Amount |
|---|---|---|---|
| Apple | 2022 | North | 150 |
| Apple | 2023 | North | 180 |
| Banana | 2022 | South | 120 |
| Banana | 2023 | South | 140 |
| Cherry | 2022 | East | 200 |
| Cherry | 2023 | East | 220 |
| Grape | 2022 | West | 90 |
| Grape | 2023 | West | 110 |
| يتم ملء جميع الصفوف الثمانية في كل مثال من أمثلة التعليمات البرمجية، بنفس الترتيب، بحيث لا تختلف بيانات المصدر أبدًا بين السيناريوهات — فقط خصائص تخطيط حقل الصفحة هي التي تختلف. |
في السيناريو الأول، نقوم بتكوين حقلي الصفحة (Year، Region) ليظهروا جنبًا إلى جنب في صف واحد في أعلى الجدول المحوري. نخصص Fruit لمحور الصف، ونضع Year أولاً وRegion ثانياً على محور الصفحة (يحدد ترتيب استدعاءات AddFieldToArea فهرس البداية)، ونضيف Amount (Sum) كحقل بيانات، ثم نعين PageFieldOrder إلى PrintOrderType.OverThenDown مع PageFieldWrapCount = 2. مع OverThenDown وعدد التفاف قدره 2، يتم وضع حقلي الصفحة أفقيًا جنبًا إلى جنب في صف واحد في أعلى الجدول المحوري، بحيث يشغل الشريط صفًا واحدًا بعرض اثنين.
using System;
using System.IO;
using Aspose.Cells;
using Aspose.Cells.Pivot;
string dataDir = "output";
if (!Directory.Exists(dataDir)) Directory.CreateDirectory(dataDir);
Workbook workbook = new Workbook();
WorksheetCollection worksheets = workbook.Worksheets;
int pivotDataIdx = worksheets.Add("PivotData");
Worksheet pivotDataSheet = worksheets[pivotDataIdx];
Cells pivotDataCells = pivotDataSheet.Cells;
// الرؤوس (الصف 0)
pivotDataCells[0, 0].PutValue("Fruit");
pivotDataCells[0, 1].PutValue("Year");
pivotDataCells[0, 2].PutValue("Region");
pivotDataCells[0, 3].PutValue("Amount");
// الصف 1: تفاح، 2022، شمال، 150
pivotDataCells[1, 0].PutValue("Apple");
pivotDataCells[1, 1].PutValue(2022);
pivotDataCells[1, 2].PutValue("North");
pivotDataCells[1, 3].PutValue(150);
// الصف 2: تفاح، 2023، شمال، 180
pivotDataCells[2, 0].PutValue("Apple");
pivotDataCells[2, 1].PutValue(2023);
pivotDataCells[2, 2].PutValue("North");
pivotDataCells[2, 3].PutValue(180);
// الصف 3: موز، 2022، جنوب، 120
pivotDataCells[3, 0].PutValue("Banana");
pivotDataCells[3, 1].PutValue(2022);
pivotDataCells[3, 2].PutValue("South");
pivotDataCells[3, 3].PutValue(120);
// الصف 4: موز، 2023، جنوب، 140
pivotDataCells[4, 0].PutValue("Banana");
pivotDataCells[4, 1].PutValue(2023);
pivotDataCells[4, 2].PutValue("South");
pivotDataCells[4, 3].PutValue(140);
// الصف 5: كرز، 2022، شرق، 200
pivotDataCells[5, 0].PutValue("Cherry");
pivotDataCells[5, 1].PutValue(2022);
pivotDataCells[5, 2].PutValue("East");
pivotDataCells[5, 3].PutValue(200);
// الصف 6: كرز، 2023، شرق، 220
pivotDataCells[6, 0].PutValue("Cherry");
pivotDataCells[6, 1].PutValue(2023);
pivotDataCells[6, 2].PutValue("East");
pivotDataCells[6, 3].PutValue(220);
// الصف 7: عنب، 2022، غرب، 90
pivotDataCells[7, 0].PutValue("Grape");
pivotDataCells[7, 1].PutValue(2022);
pivotDataCells[7, 2].PutValue("West");
pivotDataCells[7, 3].PutValue(90);
// الصف 8: عنب، 2023، غرب، 110
pivotDataCells[8, 0].PutValue("Grape");
pivotDataCells[8, 1].PutValue(2023);
pivotDataCells[8, 2].PutValue("West");
pivotDataCells[8, 3].PutValue(110);
// إضافة ورقة PivotTableReport
int pivotTableSheetIdx = worksheets.Add("PivotTableReport");
Worksheet pivotTableSheet = worksheets[pivotTableSheetIdx];
PivotTableCollection pivotTables = pivotTableSheet.PivotTables;
// إنشاء جدول محوري مصدره PivotData!A1:D9 موضوع في A1 على PivotTableReport
int pivotIndex = pivotTables.Add("PivotData!A1:D9", "A1", "PivotTable1");
PivotTable pivotTable = pivotTables[pivotIndex];
// إضافة الحقول
pivotTable.AddFieldToArea(PivotFieldType.Row, 0); // فاكهة
pivotTable.AddFieldToArea(PivotFieldType.Page, 1); // سنة
pivotTable.AddFieldToArea(PivotFieldType.Page, 2); // منطقة
pivotTable.AddFieldToArea(PivotFieldType.Data, 3); // المبلغ
pivotTable.DataFields[0].Function = ConsolidationFunction.Sum;
// تكوين تخطيط منطقة حقل الصفحة: ضع حقول الصفحة أفقياً أولاً، التفاف بعد كل 2
pivotTable.PageFieldOrder = PrintOrderType.OverThenDown;
pivotTable.PageFieldWrapCount = 2;
// التحديث والحساب
pivotTable.CalculateData();
// حفظ
workbook.Save(Path.Combine(dataDir, "pageFieldLayout_overThenDown.xlsx"));
في هذا المثال نضع Fruit على محور الصف، وYear وRegion على محور الصفحة (مع Year أولاً)، وAmount (Sum) كحقل بيانات — تمامًا كما في المثال 1. ثم نعين PageFieldOrder إلى PrintOrderType.DownThenOver وPageFieldWrapCount إلى 2. مع DownThenOver وعدد التفاف قدره 2، يتم تكديس حقلي الصفحة عموديًا — Year في الأعلى، وRegion مباشرة أدناه — مكونين عمودًا واحدًا في أعلى الجدول المحوري. وبالتالي يشغل الشريط صفين بعرض واحد، على عكس المثال 1.
using System;
using System.IO;
using Aspose.Cells;
using Aspose.Cells.Pivot;
var workbook = new Workbook();
var pivotData = workbook.Worksheets[0];
pivotData.Name = "PivotData";
int pivotReportIdx = workbook.Worksheets.Add("PivotTableReport");
var pivotReport = workbook.Worksheets[pivotReportIdx];
var headers = new[] { "Fruit", "Year", "Region", "Amount" };
for (int c = 0; c < headers.Length; c++)
{
pivotData.Cells[0, c].PutValue(headers[c]);
}
var data = new object[,]
{
{"Apple", 2022, "North", 150},
{"Apple", 2023, "North", 180},
{"Banana", 2022, "South", 120},
{"Banana", 2023, "South", 140},
{"Cherry", 2022, "East", 200},
{"Cherry", 2023, "East", 220},
{"Grape", 2022, "West", 90},
{"Grape", 2023, "West", 110}
};
for (int r = 0; r < data.GetLength(0); r++)
{
for (int c = 0; c < data.GetLength(1); c++)
{
pivotData.Cells[r + 1, c].PutValue(data[r, c]);
}
}
int idx = pivotReport.PivotTables.Add("PivotData!A1:D9", "A1", "PivotTable");
var pivotTable = pivotReport.PivotTables[idx];
pivotTable.AddFieldToArea(PivotFieldType.Row, 0);
pivotTable.AddFieldToArea(PivotFieldType.Page, 1);
pivotTable.AddFieldToArea(PivotFieldType.Page, 2);
pivotTable.AddFieldToArea(PivotFieldType.Data, 3);
pivotTable.PageFieldOrder = PrintOrderType.DownThenOver;
pivotTable.PageFieldWrapCount = 2;
pivotTable.CalculateData();
workbook.Save("pageFieldLayout_downThenOver.xlsx");
في السيناريو الثالث نحتفظ بمجموعة البيانات هذه وتخصيص الحقول، ونضع تخطيطًا محايدًا (OverThenDown مع عدد التفاف 2)، ثم نوضح عملية PageFields.Move. يستدعي Move(0, 1) نقل حقل الصفحة في الفهرس 0 (Year) إلى الموضع 1، وينتقل حقل الصفحة الذي كان في الموضع 1 (Region) إلى الموضع 0. بعد هذا الاستدعاء، Region هو حقل الصفحة الأول وYear هو الثاني. وضع الالتفاف والترتيب لم يتغير، لذا لا يزال الشريط معروضًا أفقيًا جنبًا إلى جنب — فقط ترتيب القائمتين المنسدلتين قد تم تبديله.
using System;
using Aspose.Cells;
using Aspose.Cells.Pivot;
Workbook workbook = new Workbook();
Worksheet dataSheet = workbook.Worksheets[0];
dataSheet.Name = "PivotData";
dataSheet.Cells["A1"].PutValue("Fruit");
dataSheet.Cells["B1"].PutValue("Year");
dataSheet.Cells["C1"].PutValue("Region");
dataSheet.Cells["D1"].PutValue("Amount");
dataSheet.Cells["A2"].PutValue("Apple");
dataSheet.Cells["B2"].PutValue(2022);
dataSheet.Cells["C2"].PutValue("North");
dataSheet.Cells["D2"].PutValue(150);
dataSheet.Cells["A3"].PutValue("Apple");
dataSheet.Cells["B3"].PutValue(2023);
dataSheet.Cells["C3"].PutValue("North");
dataSheet.Cells["D3"].PutValue(180);
dataSheet.Cells["A4"].PutValue("Banana");
dataSheet.Cells["B4"].PutValue(2022);
dataSheet.Cells["C4"].PutValue("South");
dataSheet.Cells["D4"].PutValue(120);
dataSheet.Cells["A5"].PutValue("Banana");
dataSheet.Cells["B5"].PutValue(2023);
dataSheet.Cells["C5"].PutValue("South");
dataSheet.Cells["D5"].PutValue(140);
dataSheet.Cells["A6"].PutValue("Cherry");
dataSheet.Cells["B6"].PutValue(2022);
dataSheet.Cells["C6"].PutValue("East");
dataSheet.Cells["D6"].PutValue(200);
dataSheet.Cells["A7"].PutValue("Cherry");
dataSheet.Cells["B7"].PutValue(2023);
dataSheet.Cells["C7"].PutValue("East");
dataSheet.Cells["D7"].PutValue(220);
dataSheet.Cells["A8"].PutValue("Grape");
dataSheet.Cells["B8"].PutValue(2022);
dataSheet.Cells["C8"].PutValue("West");
dataSheet.Cells["D8"].PutValue(90);
dataSheet.Cells["A9"].PutValue("Grape");
dataSheet.Cells["B9"].PutValue(2023);
dataSheet.Cells["C9"].PutValue("West");
dataSheet.Cells["D9"].PutValue(110);
int pivotSheetIdx = workbook.Worksheets.Add("PivotTableReport");
Worksheet pivotSheet = workbook.Worksheets[pivotSheetIdx];
int pivotIdx = pivotSheet.PivotTables.Add("PivotData!A1:D9", "A3", "PivotTable");
PivotTable pivotTable = pivotSheet.PivotTables[pivotIdx];
pivotTable.AddFieldToArea(PivotFieldType.Row, 0);
pivotTable.AddFieldToArea(PivotFieldType.Page, 1);
pivotTable.AddFieldToArea(PivotFieldType.Page, 2);
pivotTable.AddFieldToArea(PivotFieldType.Data, 3);
pivotTable.PageFieldOrder = PrintOrderType.OverThenDown;
pivotTable.PageFieldWrapCount = 2;
pivotTable.PageFields.Move(0, 1);
pivotTable.CalculateData();
workbook.Save("pageFieldLayout_move.xlsx");
Sum المستخدم في هذه المقالة.RefreshData وCalculateData، المطلوبان بعد إعادة ترتيب حقول الصفحة.Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.