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 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
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
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 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.