Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Aggiungere un campo base all’area dati (valore) è il primo passo per definire come una tabella pivot aggrega i dati di origine. Aspose.Cells espone PivotTable.AddFieldToArea(PivotFieldType, string), un overload che accetta la costante PivotFieldType.Data e il nome della colonna di origine. Una volta che un campo è stato aggiunto all’area dati, l’API lo espone attraverso la raccolta PivotTable.DataFields, nell’ordine in cui i campi sono stati aggiunti. Per impostazione predefinita, una colonna di origine numerica viene riassunta con ConsolidationFunction.Sum, mentre una colonna non numerica utilizza Count come valore predefinito.
using System;
using Aspose.Cells;
using Aspose.Cells.Pivot;
Workbook workbook = new Workbook();
Worksheet worksheet = workbook.Worksheets[0];
worksheet.Name = "Data";
// Intestazioni in A1:D1
worksheet.Cells[0, 0].PutValue("Category");
worksheet.Cells[0, 1].PutValue("Item");
worksheet.Cells[0, 2].PutValue("Year");
worksheet.Cells[0, 3].PutValue("Amount");
// Righe di dati A2:D9 utilizzando cicli annidati con diramazione su j
for (int i = 1; i <= 8; i++)
{
for (int j = 0; j < 4; j++)
{
switch (j)
{
case 0:
worksheet.Cells[i, j].PutValue(i <= 4 ? "Fruit" : "Vegetable");
break;
case 1:
if (i == 1 || i == 2) worksheet.Cells[i, j].PutValue("Apple");
else if (i == 3 || i == 4) worksheet.Cells[i, j].PutValue("Banana");
else if (i == 5 || i == 6) worksheet.Cells[i, j].PutValue("Carrot");
else worksheet.Cells[i, j].PutValue("Daikon");
break;
case 2:
worksheet.Cells[i, j].PutValue(2020 + ((i - 1) % 2));
break;
case 3:
if (i == 1) worksheet.Cells[i, j].PutValue(100);
else if (i == 2) worksheet.Cells[i, j].PutValue(150);
else if (i == 3) worksheet.Cells[i, j].PutValue(80);
else if (i == 4) worksheet.Cells[i, j].PutValue(90);
else if (i == 5) worksheet.Cells[i, j].PutValue(50);
else if (i == 6) worksheet.Cells[i, j].PutValue(60);
else if (i == 7) worksheet.Cells[i, j].PutValue(40);
else worksheet.Cells[i, j].PutValue(45);
break;
}
}
}
// Aggiungi tabella pivot in F3 con nome PivotTable1
int pivotIndex = worksheet.PivotTables.Add("A1:D9", "F3", "PivotTable1");
PivotTable pivotTable = worksheet.PivotTables[pivotIndex];
// Layout pivot: Category e Item su Riga, Year su Colonna, Amount come campo dati
pivotTable.AddFieldToArea(PivotFieldType.Row, "Category");
pivotTable.AddFieldToArea(PivotFieldType.Row, "Item");
pivotTable.AddFieldToArea(PivotFieldType.Column, "Year");
pivotTable.AddFieldToArea(PivotFieldType.Data, "Amount");
pivotTable.CalculateData();
workbook.Save("output_drag.xlsx");
Ogni campo posizionato nell’area dati viene incapsulato internamente come un’istanza di PivotField, e la sua proprietà Function restituisce un valore dall’enum ConsolidationFunction. Lo stesso setter Function consente di passare tra le aggregazioni disponibili, tra cui Sum, Count, Average, Max, Min, Product, StdDev, StdDevp, Var e Varp.
Function influisce solo sull’aggregazione, la colonna di origine non cambia.
Puoi quindi lasciare un campo dati come Sum mentre aggiungi un secondo campo dati che fa riferimento alla stessa colonna di origine ma utilizza Count o Average, tutto in un’unica tabella pivot.
using System;
using Aspose.Cells;
using Aspose.Cells.Pivot;
Workbook workbook = new Workbook();
Worksheet worksheet = workbook.Worksheets[0];
worksheet.Name = "Data";
worksheet.Cells[0, 0].PutValue("Category");
worksheet.Cells[0, 1].PutValue("Item");
worksheet.Cells[0, 2].PutValue("Year");
worksheet.Cells[0, 3].PutValue("Amount");
for (int i = 1; i <= 8; i++)
{
for (int j = 0; j <= 3; j++)
{
if (j == 0)
{
worksheet.Cells[i, j].PutValue(i <= 5 ? "Fruit" : "Vegetable");
}
else if (j == 1)
{
string[] items = { "Apple", "Apple", "Banana", "Banana", "Carrot", "Carrot", "Daikon", "Daikon" };
worksheet.Cells[i, j].PutValue(items[i - 1]);
}
else if (j == 2)
{
int[] years = { 2020, 2021, 2020, 2021, 2020, 2021, 2020, 2021 };
worksheet.Cells[i, j].PutValue(years[i - 1]);
}
else
{
int[] amounts = { 100, 150, 80, 90, 50, 60, 40, 45 };
worksheet.Cells[i, j].PutValue(amounts[i - 1]);
}
}
}
int pivotIndex = worksheet.PivotTables.Add("A1:D9", "F3", "PivotTable1");
PivotTable pivotTable = worksheet.PivotTables[pivotIndex];
pivotTable.AddFieldToArea(PivotFieldType.Row, "Category");
pivotTable.AddFieldToArea(PivotFieldType.Row, "Item");
pivotTable.AddFieldToArea(PivotFieldType.Column, "Year");
pivotTable.AddFieldToArea(PivotFieldType.Data, "Amount");
pivotTable.AddFieldToArea(PivotFieldType.Data, "Amount");
PivotField countField = pivotTable.DataFields[1];
countField.Function = ConsolidationFunction.Count;
pivotTable.CalculateData();
workbook.Save("output_function.xlsx");
Quando una tabella pivot contiene due o più campi dati, Aspose.Cells espone un ulteriore campo virtuale chiamato PivotTable.ValuesField. Questo campo virtuale rappresenta l’aggregazione di ogni campo dati che risiede nell’area dati. Puoi trascinarlo nell’area Riga o Colonna come campo pivot base, operazione utile per disporre più misure affiancate.
PivotTable.ValuesField non funziona se non ci sono campi valore o se ne è presente solo uno.
Gli scenari seguenti illustrano tre esempi end-to-end che dimostrano ciascuna delle funzionalità descritte sopra applicate alla stessa struttura pivot.
using System;
using Aspose.Cells;
using Aspose.Cells.Pivot;
Workbook workbook = new Workbook();
Worksheet worksheet = workbook.Worksheets[0];
worksheet.Name = "Data";
worksheet.Cells[0, 0].PutValue("Category");
worksheet.Cells[0, 1].PutValue("Item");
worksheet.Cells[0, 2].PutValue("Year");
worksheet.Cells[0, 3].PutValue("Amount");
string[] categories = { "Fruit", "Fruit", "Fruit", "Fruit", "Vegetable", "Vegetable", "Vegetable", "Vegetable" };
string[] items = { "Apple", "Apple", "Banana", "Banana", "Carrot", "Carrot", "Daikon", "Daikon" };
int[] years = { 2020, 2021, 2020, 2021, 2020, 2021, 2020, 2021 };
int[] amounts = { 100, 150, 80, 90, 50, 60, 40, 45 };
for (int i = 1; i <= 8; i++)
{
for (int j = 0; j <= 3; j++)
{
if (j == 0) worksheet.Cells[i, j].PutValue(categories[i - 1]);
else if (j == 1) worksheet.Cells[i, j].PutValue(items[i - 1]);
else if (j == 2) worksheet.Cells[i, j].PutValue(years[i - 1]);
else worksheet.Cells[i, j].PutValue(amounts[i - 1]);
}
}
int pivotIndex = worksheet.PivotTables.Add("A1:D9", "F3", "PivotTable1");
PivotTable pivotTable = worksheet.PivotTables[pivotIndex];
pivotTable.AddFieldToArea(PivotFieldType.Row, "Category");
pivotTable.AddFieldToArea(PivotFieldType.Row, "Item");
pivotTable.AddFieldToArea(PivotFieldType.Column, "Year");
pivotTable.AddFieldToArea(PivotFieldType.Data, "Amount");
pivotTable.AddFieldToArea(PivotFieldType.Data, "Amount");
pivotTable.DataFields[1].Function = ConsolidationFunction.Count;
pivotTable.AddFieldToArea(PivotFieldType.Column, pivotTable.ValuesField.Name);
pivotTable.CalculateData();
workbook.Save("output_plot.xlsx");
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.