En este artículo, aprenderá cómo crear una tabla dinámica en Excel y ordenar u ocultar los datos o elementos de la tabla dinámica mediante programación en C# usando Aspose.Cells for .NET - .NET API para crear y manipular hojas de cálculo de Excel sin necesidad de Microsoft Excel.

Tablas dinámicas en Excel

Las cosas se han vuelto digitales y las soluciones automatizadas para la generación y manipulación de hojas de cálculo de Excel son ampliamente utilizadas. Las tablas dinámicas en Excel se utilizan ampliamente para resumir y analizar los datos. Mientras que ordenar los datos en las tablas dinámicas es muy útil para la inspección crítica de la gran cantidad de datos en las hojas de cálculo de Excel. La clasificación de datos en tablas dinámicas se puede aplicar para organizar los elementos alfabéticamente (AZ o ZA) para valores de texto o del mayor al menor o del menor al mayor en el caso de los números.

Basado en la importancia de las tablas dinámicas de Excel, este artículo tiene como objetivo mostrarle cómo:

  • crear una tabla dinámica en Excel,
  • ordenar la tabla dinámica por valores de campo de fila,
  • ordenar la tabla dinámica por valores de campo de columna,
  • y ocultar las filas de la tabla dinámica.

Para la demostración, se utilizará la siguiente hoja de cálculo de Excel de muestra a lo largo de los ejemplos.

Crear tabla dinámica en Excel en C#

Crear una tabla dinámica en Excel usando C#

Primero veamos cómo crear una tabla dinámica de Excel en C# usando Aspose.Cells for .NET. Una vez que hayamos creado la tabla dinámica, ocultaremos las filas y ordenaremos los datos según su columna o los campos de fila. El siguiente ejemplo de código muestra cómo crear una tabla dinámica de Excel.

Workbook wb = new Workbook("SampleExcel.xlsx");

// Obtener la referencia de la hoja de trabajo recién agregada
Worksheet sheet = wb.Worksheets[0];

PivotTableCollection pivotTables = sheet.PivotTables;

// tabla dinámica de origen
// Agregar una tabla dinámica a la hoja de cálculo
int index = pivotTables.Add("=Sheet1!A1:C10", "E3", "PivotTable2");

//Acceso a la instancia de la tabla dinámica recién agregada
PivotTable pivotTable = pivotTables[index];

// No mostrar los totales generales de las filas.
pivotTable.RowGrand = false;
pivotTable.ColumnGrand = false;

// Arrastrando el primer campo al área de la fila.
pivotTable.AddFieldToArea(PivotFieldType.Row, 1);
PivotField rowField = pivotTable.RowFields[0];
rowField.IsAutoSort = true;
rowField.IsAscendSort = true;

// Arrastrando el segundo campo al área de la columna.
pivotTable.AddFieldToArea(PivotFieldType.Column, 0);
PivotField colField = pivotTable.ColumnFields[0];
colField.NumberFormat = "dd/mm/yyyy";
colField.IsAutoSort = true;
colField.IsAscendSort = true;

// Arrastrando el tercer campo al área de datos.
pivotTable.AddFieldToArea(PivotFieldType.Data, 2);

pivotTable.RefreshData();
pivotTable.CalculateData();
// end of tabla dinámica de origen

//Guardar el archivo de Excel
wb.Save("output.xlsx");

Producción

Crear tabla dinámica en Excel en ASP.NET

Ordenar tabla dinámica por valores de campo de fila en C#

En la sección anterior, simplemente creamos la tabla dinámica utilizando los datos de la hoja de cálculo de Excel. Ahora, crearemos otra tabla dinámica y aplicaremos la clasificación a los datos. El siguiente ejemplo de código crea y ordena la tabla dinámica por valores de campo de fila “Mariscos”.

Workbook wb = new Workbook("SampleExcel.xlsx");

// Obtención de la referencia de la hoja de cálculo de Excel.
Worksheet sheet = wb.Worksheets[0];

PivotTableCollection pivotTables = sheet.PivotTables;

// Agregar una tabla dinámica a la hoja de cálculo de Excel.
int index = pivotTables.Add("=Sheet1!A1:C10", "E3", "PivotTable2");

// Acceder a la instancia de la tabla dinámica recién agregada.
PivotTable pivotTable = pivotTables[index];

// No mostrar los totales generales de las filas.
pivotTable.RowGrand = false;
pivotTable.ColumnGrand = false;

// Arrastrando el primer campo al área de la fila.
pivotTable.AddFieldToArea(PivotFieldType.Row, 1);
PivotField rowField = pivotTable.RowFields[0];
rowField.IsAutoSort = true;
rowField.IsAscendSort = true;

// Arrastrando el segundo campo al área de la columna.
pivotTable.AddFieldToArea(PivotFieldType.Column, 0);
PivotField colField = pivotTable.ColumnFields[0];
colField.NumberFormat = "dd/mm/yyyy";
colField.IsAutoSort = true;
colField.IsAscendSort = true;
colField.AutoSortField = 0;

// Arrastrando el tercer campo al área de datos.
pivotTable.AddFieldToArea(PivotFieldType.Data, 2);

pivotTable.RefreshData();
pivotTable.CalculateData();

// Guardando el archivo de Excel.
wb.Save("output.xlsx");

Producción

Crear y ordenar tablas dinámicas en Excel

Ordenar tabla dinámica por valores de campo de columna en C#

También puede ordenar los datos en una tabla dinámica por los valores de campo de la columna. El siguiente ejemplo de código C# aplica la ordenación de los valores de campo de la columna “28/07/2000”.

Workbook wb = new Workbook("SampleExcel.xlsx");

// Obtención de la referencia de la hoja de cálculo de Excel.
Worksheet sheet = wb.Worksheets[0];

PivotTableCollection pivotTables = sheet.PivotTables;

// Agregar una tabla dinámica a la hoja de cálculo de Excel.
int index = pivotTables.Add("=Sheet1!A1:C10", "E3", "PivotTable2");

// Acceder a la instancia de la tabla dinámica recién agregada.
PivotTable pivotTable = pivotTables[index];

// No mostrar los totales generales de las filas.
pivotTable.RowGrand = false;
pivotTable.ColumnGrand = false;

// Arrastrando el primer campo al área de la fila.
pivotTable.AddFieldToArea(PivotFieldType.Row, 1);
PivotField rowField = pivotTable.RowFields[0];
rowField.IsAutoSort = true;
rowField.IsAscendSort = true;
colField.AutoSortField = 0;

// Arrastrando el segundo campo al área de la columna.
pivotTable.AddFieldToArea(PivotFieldType.Column, 0);
PivotField colField = pivotTable.ColumnFields[0];
colField.NumberFormat = "dd/mm/yyyy";
colField.IsAutoSort = true;
colField.IsAscendSort = true;

// Arrastrando el tercer campo al área de datos.
pivotTable.AddFieldToArea(PivotFieldType.Data, 2);

pivotTable.RefreshData();
pivotTable.CalculateData();

// Guardando el archivo de Excel.
wb.Save("output.xlsx");

Producción

Ocultar datos en tabla dinámica en Excel

Ocultar filas de tablas dinámicas en C#

Puede ocultar las filas en la tabla dinámica de Excel según ciertas condiciones que desee aplicar. El siguiente ejemplo de código muestra cómo ocultar filas particulares en la tabla dinámica usando C#.

Workbook workbook = new Workbook("output.xlsx");
Worksheet worksheet = workbook.Worksheets[0];

var pivotTable = worksheet.PivotTables[0];
var dataBodyRange = pivotTable.DataBodyRange;
int currentRow = 1;
int rowsUsed = dataBodyRange.EndRow;

// Ordenar valores en forma descendente
PivotField field = pivotTable.RowFields[0];
field.IsAutoSort = true;
field.IsAscendSort = false;
field.AutoSortField = 0;

pivotTable.RefreshData();
pivotTable.CalculateData();

// Ocultar filas con valor inferior a 15
while (currentRow < rowsUsed)
{
	Cell cell = worksheet.Cells[currentRow, 2];
	double score = Convert.ToDouble(cell.Value);
	if (score < 15)
	{
		worksheet.Cells.HideRow(currentRow);
	}
	currentRow++;
}

pivotTable.RefreshData();
pivotTable.CalculateData();

// Guardar el archivo de Excel
workbook.Save("PivotTableHideAndSort.xlsx");

Eche un vistazo a la documentación de Aspose.Cells for .NET para obtener más detalles sobre cómo trabajar con tablas dinámicas en Excel usando C# en cualquier aplicación basada en .NET. Contáctenos en nuestro foro en caso de cualquier pregunta o consulta.

Conclusión

En este artículo, ha aprendido a trabajar con tablas dinámicas en archivos de Excel usando C#. En particular, ha visto cómo crear tablas dinámicas y ordenar u ocultar datos en tablas dinámicas en Excel usando C#. Puede explorar más sobre Aspose.Cells for .NET usando documentación.

Ver también