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) يعيد ترتيب حقول الصفحة دون تغيير وضع ترتيبها.
تشرح هذه المقالة ثلاثة أمثلة برمجية، يوضح كل منها إحدى هذه العمليات على مجموعة بيانات مشتركة، لتتمكن من مقارنة التخطيطات الناتجة جنبًا إلى جنب.| الفاكهة | السنة | المنطقة | المبلغ |
|---|---|---|---|
| تفاحة | 2022 | الشمال | 150 |
| تفاحة | 2023 | الشمال | 180 |
| موز | 2022 | الجنوب | 120 |
| موز | 2023 | الجنوب | 140 |
| كرز | 2022 | الشرق | 200 |
| كرز | 2023 | الشرق | 220 |
| عنب | 2022 | الغرب | 90 |
| عنب | 2023 | الغرب | 110 |
| تكون الصفوف الثمانية جميعها ممتلئة في كل مثال برمجي وبالترتيب نفسه، لذا لا تختلف بيانات المصدر بين السيناريوهات؛ بل تتغير فقط خصائص تخطيط حقول الصفحة. |
في السيناريو الأول، نهيكل حقلي الصفحة (Year وRegion) بحيث يظهران جنبًا إلى جنب في صف واحد في أعلى الجدول المحوري. نعين Fruit إلى محور الصفوف، ونضع Year أولًا وRegion ثانيًا على محور الصفحة، حيث يحدد ترتيب استدعاءات addFieldToArea الفهرس الابتدائي، ثم نضيف Amount (Sum) كحقل بيانات، ثم نضبط pivotTable.pageFieldOrder على PrintOrderType.OverThenDown مع pivotTable.pageFieldWrapCount = 2. مع OverThenDown وعدد مرات الالتفاف البالغ 2، توضع حقول الصفحة أفقيًا جنبًا إلى جنب في صف واحد أعلى الجدول المحوري، لذا يشغل الشريط صفًا واحدًا يتسع لحقلين.
<!DOCTYPE html>
<html>
<head>
<title>Aspose.Cells Example</title>
</head>
<body>
<h1>Aspose.Cells Example</h1>
<button id="runExample">Run Example</button>
<a id="downloadLink" style="display: none;">Download Result</a>
<div id="result"></div>
</body>
<script src="aspose.cells.js.min.js"></script>
<script type="text/javascript">
const { Workbook, SaveFormat } = AsposeCells;
AsposeCells.onReady({
license: "/lic/aspose.cells.enc",
fontPath: "/fonts/",
fontList: ["arial.ttf", "NotoSansSC-Regular.ttf"]
}).then(() => {
console.log("Aspose.Cells initialized");
});
document.getElementById('runExample').addEventListener('click', async () => {
const workbook = new Workbook();
const worksheets = workbook.worksheets;
const pivotDataSheet = worksheets.add("PivotData");
const pivotDataCells = pivotDataSheet.cells;
// رؤوس الأعمدة (الصف 0)
pivotDataCells.get(0, 0).value = "Fruit";
pivotDataCells.get(0, 1).value = "Year";
pivotDataCells.get(0, 2).value = "Region";
pivotDataCells.get(0, 3).value = "Amount";
// الصف 1: تفاح، 2022، الشمال، 150
pivotDataCells.get(1, 0).value = "Apple";
pivotDataCells.get(1, 1).value = 2022;
pivotDataCells.get(1, 2).value = "North";
pivotDataCells.get(1, 3).value = 150;
// الصف 2: تفاح، 2023، الشمال، 180
pivotDataCells.get(2, 0).value = "Apple";
pivotDataCells.get(2, 1).value = 2023;
pivotDataCells.get(2, 2).value = "North";
pivotDataCells.get(2, 3).value = 180;
// الصف 3: موز، 2022، الجنوب، 120
pivotDataCells.get(3, 0).value = "Banana";
pivotDataCells.get(3, 1).value = 2022;
pivotDataCells.get(3, 2).value = "South";
pivotDataCells.get(3, 3).value = 120;
// الصف 4: موز، 2023، الجنوب، 140
pivotDataCells.get(4, 0).value = "Banana";
pivotDataCells.get(4, 1).value = 2023;
pivotDataCells.get(4, 2).value = "South";
pivotDataCells.get(4, 3).value = 140;
// الصف 5: كرز، 2022، الشرق، 200
pivotDataCells.get(5, 0).value = "Cherry";
pivotDataCells.get(5, 1).value = 2022;
pivotDataCells.get(5, 2).value = "East";
pivotDataCells.get(5, 3).value = 200;
// الصف 6: كرز، 2023، الشرق، 220
pivotDataCells.get(6, 0).value = "Cherry";
pivotDataCells.get(6, 1).value = 2023;
pivotDataCells.get(6, 2).value = "East";
pivotDataCells.get(6, 3).value = 220;
// الصف 7: عنب، 2022، الغرب، 90
pivotDataCells.get(7, 0).value = "Grape";
pivotDataCells.get(7, 1).value = 2022;
pivotDataCells.get(7, 2).value = "West";
pivotDataCells.get(7, 3).value = 90;
// الصف 8: عنب، 2023، الغرب، 110
pivotDataCells.get(8, 0).value = "Grape";
pivotDataCells.get(8, 1).value = 2023;
pivotDataCells.get(8, 2).value = "West";
pivotDataCells.get(8, 3).value = 110;
// إضافة ورقة PivotTableReport
const pivotTableSheet = worksheets.add("PivotTableReport");
const pivotTables = pivotTableSheet.pivotTables;
// إنشاء جدول محوري مصدره PivotData!A1:D9 ووضعه في A1 على ورقة PivotTableReport
const pivotTable = pivotTables.add("PivotData!A1:D9", 0, 0);
// إضافة الحقول
pivotTable.addFieldToArea(AsposeCells.PivotFieldType.Row, 0); // الفاكهة
pivotTable.addFieldToArea(AsposeCells.PivotFieldType.Page, 1); // السنة
pivotTable.addFieldToArea(AsposeCells.PivotFieldType.Page, 2); // المنطقة
pivotTable.addFieldToArea(AsposeCells.PivotFieldType.Data, 3); // المبلغ
pivotTable.dataFields.get(0).function = AsposeCells.ConsolidationFunction.Sum;
// configuring تخطيط منطقة حقول الصفحة: وضع حقول الصفحة أفقيًا أولًا والالتفاف بعد كل حقلين
pivotTable.pageFieldOrder = AsposeCells.PrintOrderType.OverThenDown;
pivotTable.pageFieldWrapCount = 2;
// تحديث البيانات وحسابها
pivotTable.calculateData();
// الحفظ
const outputData = workbook.save(SaveFormat.Xlsx);
const blob = new Blob([outputData]);
const downloadLink = document.getElementById('downloadLink');
downloadLink.href = URL.createObjectURL(blob);
downloadLink.download = "pageFieldLayout_overThenDown.xlsx";
downloadLink.style.display = "block";
document.getElementById('result').innerHTML = '<p style="color: green;">Done! Click the download link to get the result file.</p>';
});
</script>
</html>
في هذا المثال، نضع Fruit على محور الصفوف، وYear وRegion على محور الصفحة، مع وضع Year أولًا، وAmount (Sum) كحقل بيانات، تمامًا كما في المثال 1. ثم نضبط pivotTable.pageFieldOrder على PrintOrderType.DownThenOver وpivotTable.pageFieldWrapCount على 2. مع DownThenOver وعدد مرات الالتفاف البالغ 2، تكدس حقول الصفحة رأسيًا، بحيث يكون Year في الأعلى وRegion مباشرةً تحته، مما ينتج عمودًا واحدًا في أعلى الجدول المحوري. لذا يشغل الشريط صفين بعرض حقل واحد، بخلاف المثال 1.
<!DOCTYPE html>
<html>
<head>
<title>Aspose.Cells Example</title>
</head>
<body>
<h1>Aspose.Cells Example</h1>
<button id="runExample">Run Example</button>
<a id="downloadLink" style="display: none;">Download Result</a>
<div id="result"></div>
</body>
<script src="aspose.cells.js.min.js"></script>
<script type="text/javascript">
const { Workbook, SaveFormat } = AsposeCells;
AsposeCells.onReady({
license: "/lic/aspose.cells.enc",
fontPath: "/fonts/",
fontList: ["arial.ttf", "NotoSansSC-Regular.ttf"]
}).then(() => {
console.log("Aspose.Cells initialized");
});
document.getElementById('runExample').addEventListener('click', async () => {
const workbook = new Workbook();
const pivotData = workbook.worksheets.get(0);
pivotData.name = "PivotData";
const pivotReport = workbook.worksheets.add("PivotTableReport");
const headers = ["Fruit", "Year", "Region", "Amount"];
for (let c = 0; c < headers.length; c++) {
pivotData.cells.get(0, c).value = headers[c];
}
const data = [
["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 (let r = 0; r < data.length; r++) {
for (let c = 0; c < data[r].length; c++) {
pivotData.cells.get(r + 1, c).value = data[r][c];
}
}
const pivotTable = pivotReport.pivotTables.add("=PivotData!A1:D9", 0, 0);
pivotTable.addFieldToArea(AsposeCells.PivotFieldType.Row, 0);
pivotTable.addFieldToArea(AsposeCells.PivotFieldType.Page, 1);
pivotTable.addFieldToArea(AsposeCells.PivotFieldType.Page, 2);
pivotTable.addFieldToArea(AsposeCells.PivotFieldType.Data, 3);
pivotTable.pageFieldOrder = AsposeCells.PrintOrderType.DownThenOver;
pivotTable.pageFieldWrapCount = 2;
pivotTable.calculateData();
const outputData = workbook.save(SaveFormat.Xlsx);
const blob = new Blob([outputData], {
type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
});
const downloadLink = document.getElementById('downloadLink');
downloadLink.href = URL.createObjectURL(blob);
downloadLink.download = "pageFieldLayout_downThenOver.xlsx";
downloadLink.style.display = "block";
document.getElementById('result').innerHTML =
'<p style="color: green;">Done! Click the download link to get the result file.</p>';
});
</script>
</html>
في السيناريو الثالث، نحتفظ بمجموعة البيانات نفسها وتوزيع الحقول نفسه، ونضبط تخطيطًا محايدًا (OverThenDown مع ضبط عدد مرات الالتفاف على 2)، ثم نوضح عملية pivotTable.pageFields.move. ينقل الاستدعاء move(0, 1) حقل الصفحة الموجود عند الفهرس 0 (Year) إلى الموضع 1، وينتقل حقل الصفحة الموجود في الموضع 1 (Region) إلى الموضع 0. بعد هذا الاستدعاء، يصبح Region أول حقل صفحة ويصبح Year ثانيه. يبقى إعداد الالتفاف ووضع ترتيب حقول الصفحة دون تغيير، لذا لا يزال الشريط يُعرض أفقيًا وتظل حقول الصفحة متجاورة، مع تبديل ترتيب القائمتين المنسدلتين فقط.
<!DOCTYPE html>
<html>
<head>
<title>Aspose.Cells Example</title>
</head>
<body>
<h1>Aspose.Cells Example</h1>
<button id="runExample">Run Example</button>
<a id="downloadLink" style="display: none;">Download Result</a>
<div id="result"></div>
</body>
<script src="aspose.cells.js.min.js"></script>
<script type="text/javascript">
const { Workbook, SaveFormat } = AsposeCells;
const initialization = AsposeCells.onReady({
license: "/lic/aspose.cells.enc",
fontPath: "/fonts/",
fontList: ["arial.ttf", "NotoSansSC-Regular.ttf"]
}).then(() => {
console.log("Aspose.Cells initialized");
});
document.getElementById('runExample').addEventListener('click', async () => {
await initialization;
const workbook = new Workbook();
const dataSheet = workbook.worksheets.get(0);
dataSheet.name = "PivotData";
const cells = dataSheet.cells;
cells.get("A1").value = "Fruit";
cells.get("B1").value = "Year";
cells.get("C1").value = "Region";
cells.get("D1").value = "Amount";
cells.get("A2").value = "Apple";
cells.get("B2").value = 2022;
cells.get("C2").value = "North";
cells.get("D2").value = 150;
cells.get("A3").value = "Apple";
cells.get("B3").value = 2023;
cells.get("C3").value = "North";
cells.get("D3").value = 180;
cells.get("A4").value = "Banana";
cells.get("B4").value = 2022;
cells.get("C4").value = "South";
cells.get("D4").value = 120;
cells.get("A5").value = "Banana";
cells.get("B5").value = 2023;
cells.get("C5").value = "South";
cells.get("D5").value = 140;
cells.get("A6").value = "Cherry";
cells.get("B6").value = 2022;
cells.get("C6").value = "East";
cells.get("D6").value = 200;
cells.get("A7").value = "Cherry";
cells.get("B7").value = 2023;
cells.get("C7").value = "East";
cells.get("D7").value = 220;
cells.get("A8").value = "Grape";
cells.get("B8").value = 2022;
cells.get("C8").value = "West";
cells.get("D8").value = 90;
cells.get("A9").value = "Grape";
cells.get("B9").value = 2023;
cells.get("C9").value = "West";
cells.get("D9").value = 110;
const pivotSheet = workbook.worksheets.add("PivotTableReport");
const pivotTable = pivotSheet.pivotTables.add("=PivotData!A1:D9", 2, 0);
pivotTable.addFieldToArea(AsposeCells.PivotFieldType.Row, "Fruit");
pivotTable.addFieldToArea(AsposeCells.PivotFieldType.Page, "Year");
pivotTable.addFieldToArea(AsposeCells.PivotFieldType.Page, "Region");
pivotTable.addFieldToArea(AsposeCells.PivotFieldType.Data, "Amount");
pivotTable.pageFieldOrder = AsposeCells.PrintOrderType.OverThenDown;
pivotTable.pageFieldWrapCount = 2;
pivotTable.pageFields.move(0, 1);
pivotTable.calculateData();
const outputData = workbook.save(SaveFormat.Xlsx);
const blob = new Blob([outputData]);
const downloadLink = document.getElementById('downloadLink');
downloadLink.href = URL.createObjectURL(blob);
downloadLink.download = "pageFieldLayout_move.xlsx";
downloadLink.style.display = "block";
document.getElementById('result').innerHTML =
'<p style="color: green;">Done! Click the download link to get the result file.</p>';
});
</script>
</html>
Sum المستخدم في هذه المقالة.Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.