Neste artigo, você aprenderá como criar Tabela Dinâmica no Excel e classificar ou ocultar os dados ou itens da Tabela Dinâmica programaticamente em C# usando Aspose.Cells for .NET - API .NET para criar e manipular planilhas do Excel sem exigir o Microsoft Excel.

Tabelas dinâmicas no Excel

As coisas se tornaram digitais e soluções automatizadas para geração e manipulação de planilhas do Excel são amplamente utilizadas. As Tabelas Dinâmicas no Excel são amplamente utilizadas para resumir e analisar os dados. Considerando que a classificação dos dados nas Tabelas Dinâmicas é muito útil para a inspeção crítica dos grandes dados em planilhas do Excel. A classificação dos dados em Tabelas Dinâmicas pode ser aplicada para organizar os itens em ordem alfabética (AZ ou ZA) para valores de texto ou do maior para o menor ou do menor para o maior no caso de números.

Baseado na importância das Tabelas Dinâmicas do Excel, este artigo tem como objetivo mostrar como:

  • criar uma tabela dinâmica no Excel,
  • classificar a Tabela Dinâmica por valores de campo de linha,
  • classificar Tabela Dinâmica por valores de campo de coluna,
  • e ocultar as linhas da Tabela Dinâmica.

Para a demonstração, a planilha Excel de amostra a seguir será usada em todos os exemplos.

Criar tabela dinâmica no Excel em C#

Criar uma tabela dinâmica no Excel usando C#

Vamos primeiro verificar como criar uma tabela dinâmica do Excel em C# usando Aspose.Cells para .NET. Depois de criar a Tabela Dinâmica, ocultaremos as linhas e classificaremos os dados com base em sua coluna ou nos campos de linha. O exemplo de código a seguir mostra como criar uma tabela dinâmica do Excel.

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

// Obtendo a referência da planilha recém-adicionada
Worksheet sheet = wb.Worksheets[0];

PivotTableCollection pivotTables = sheet.PivotTables;

// tabela dinâmica de origem
// Adicionando uma tabela dinâmica à planilha
int index = pivotTables.Add("=Sheet1!A1:C10", "E3", "PivotTable2");

//Acessando a instância da tabela dinâmica recém-adicionada
PivotTable pivotTable = pivotTables[index];

// Não mostrando totais gerais para linhas.
pivotTable.RowGrand = false;
pivotTable.ColumnGrand = false;

// Arrastando o primeiro campo para a área da linha.
pivotTable.AddFieldToArea(PivotFieldType.Row, 1);
PivotField rowField = pivotTable.RowFields[0];
rowField.IsAutoSort = true;
rowField.IsAscendSort = true;

// Arrastando o segundo campo para a área da coluna.
pivotTable.AddFieldToArea(PivotFieldType.Column, 0);
PivotField colField = pivotTable.ColumnFields[0];
colField.NumberFormat = "dd/mm/yyyy";
colField.IsAutoSort = true;
colField.IsAscendSort = true;

// Arrastando o terceiro campo para a área de dados.
pivotTable.AddFieldToArea(PivotFieldType.Data, 2);

pivotTable.RefreshData();
pivotTable.CalculateData();
// end of tabela dinâmica de origem

//Salvando o arquivo Excel
wb.Save("output.xlsx");

Resultado

Criar tabela dinâmica no Excel em ASP.NET

Classificar tabela dinâmica por valores de campo de linha em c#

Na seção anterior, simplesmente criamos a Tabela Dinâmica usando os dados da planilha do Excel. Agora, vamos criar outra Tabela Dinâmica e aplicar a classificação nos dados. O exemplo de código a seguir cria e classifica a tabela dinâmica por valores de campo de linha “SeaFood”.

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

// Obtenção da referência da planilha Excel.
Worksheet sheet = wb.Worksheets[0];

PivotTableCollection pivotTables = sheet.PivotTables;

// Adicionando uma tabela dinâmica à planilha do Excel.
int index = pivotTables.Add("=Sheet1!A1:C10", "E3", "PivotTable2");

// Acessando a instância da tabela dinâmica recém-adicionada.
PivotTable pivotTable = pivotTables[index];

// Não mostrando totais gerais para linhas.
pivotTable.RowGrand = false;
pivotTable.ColumnGrand = false;

// Arrastando o primeiro campo para a área da linha.
pivotTable.AddFieldToArea(PivotFieldType.Row, 1);
PivotField rowField = pivotTable.RowFields[0];
rowField.IsAutoSort = true;
rowField.IsAscendSort = true;

// Arrastando o segundo campo para a área da coluna.
pivotTable.AddFieldToArea(PivotFieldType.Column, 0);
PivotField colField = pivotTable.ColumnFields[0];
colField.NumberFormat = "dd/mm/yyyy";
colField.IsAutoSort = true;
colField.IsAscendSort = true;
colField.AutoSortField = 0;

// Arrastando o terceiro campo para a área de dados.
pivotTable.AddFieldToArea(PivotFieldType.Data, 2);

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

// Salvando o arquivo Excel.
wb.Save("output.xlsx");

Resultado

Criar e classificar tabela dinâmica no Excel

Classificar tabela dinâmica por valores de campo de coluna em c#

Você também pode classificar os dados em uma Tabela Dinâmica pelos valores do campo da coluna. O exemplo de código C# a seguir aplica a classificação em valores de campo da coluna “28/07/2000”.

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

// Obtenção da referência da planilha Excel.
Worksheet sheet = wb.Worksheets[0];

PivotTableCollection pivotTables = sheet.PivotTables;

// Adicionando uma tabela dinâmica à planilha do Excel.
int index = pivotTables.Add("=Sheet1!A1:C10", "E3", "PivotTable2");

// Acessando a instância da tabela dinâmica recém-adicionada.
PivotTable pivotTable = pivotTables[index];

// Não mostrando totais gerais para linhas.
pivotTable.RowGrand = false;
pivotTable.ColumnGrand = false;

// Arrastando o primeiro campo para a área da linha.
pivotTable.AddFieldToArea(PivotFieldType.Row, 1);
PivotField rowField = pivotTable.RowFields[0];
rowField.IsAutoSort = true;
rowField.IsAscendSort = true;
colField.AutoSortField = 0;

// Arrastando o segundo campo para a área da coluna.
pivotTable.AddFieldToArea(PivotFieldType.Column, 0);
PivotField colField = pivotTable.ColumnFields[0];
colField.NumberFormat = "dd/mm/yyyy";
colField.IsAutoSort = true;
colField.IsAscendSort = true;

// Arrastando o terceiro campo para a área de dados.
pivotTable.AddFieldToArea(PivotFieldType.Data, 2);

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

// Salvando o arquivo Excel.
wb.Save("output.xlsx");

Resultado

Ocultar dados na tabela dinâmica no Excel

Ocultar linhas da tabela dinâmica em C#

Você pode ocultar as linhas na Tabela Dinâmica do Excel com base em determinadas condições que deseja aplicar. O exemplo de código a seguir mostra como ocultar linhas específicas na tabela 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;

// Classificando valores em decrescente
PivotField field = pivotTable.RowFields[0];
field.IsAutoSort = true;
field.IsAscendSort = false;
field.AutoSortField = 0;

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

// Ocultar linhas com 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();

// Salvando o arquivo Excel
workbook.Save("PivotTableHideAndSort.xlsx");

Dê uma olhada na documentação do Aspose.Cells para .NET para mais detalhes sobre como trabalhar com Tabelas Dinâmicas no Excel usando C# em qualquer aplicativo baseado em .NET. Entre em contato conosco em nosso fórum em caso de dúvidas ou perguntas.

Conclusão

Neste artigo, você aprendeu a trabalhar com tabelas dinâmicas em arquivos do Excel usando C#. Particularmente, você viu como criar tabelas dinâmicas e classificar ou ocultar dados em tabelas dinâmicas no Excel usando C#. Você pode explorar mais sobre o Aspose.Cells para .NET usando documentação.

Veja também