在本文中,您将学习如何使用 C# 在 Excel 中创建数据透视表。此外,我们还将介绍如何使用 Aspose.Cells for .NET 以编程方式对数据透视表数据进行排序或隐藏 - 一种无需 Microsoft Excel 即可创建和操作 Excel 电子表格的 .NET API。

Excel 中的数据透视表

用于生成和操作 Excel 电子表格的数字化和自动化解决方案已被广泛使用。 Excel 中的数据透视表广泛用于汇总和分析数据。而对数据透视表中的数据进行排序对于对 Excel 电子表格中的大量数据进行严格检查非常有用。数据透视表中的数据排序可用于按字母顺序(AZ 或 ZA)排列文本值的项目,或从最高到最低或最低到最高值(如果是数字)排列项目。

基于 Excel 数据透视表的重要性,本文旨在向您展示如何:

  • 通过 C# 在 Excel 中创建数据透视表,
  • 按行字段值对数据透视表进行排序,
  • 按列字段值对数据透视表进行排序,
  • 并隐藏数据透视表行。

对于演示,将在整个示例中使用以下示例 Excel 电子表格。

在 C# 中的 Excel 中创建数据透视表

在 C# 中的 Excel 中创建数据透视表

让我们首先看看如何使用 Aspose.Cells for .NET 在 C# 中创建 Excel 数据透视表。创建数据透视表后,我们将隐藏行并根据其列或行字段对数据进行排序。以下代码示例显示了如何创建 Excel 数据透视表。

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

// 获取新增工作表的引用
Worksheet sheet = wb.Worksheets[0];

PivotTableCollection pivotTables = sheet.PivotTables;

// 源数据透视表
// 将数据透视表添加到工作表
int index = pivotTables.Add("=Sheet1!A1:C10", "E3", "PivotTable2");

//访问新添加的数据透视表的实例
PivotTable pivotTable = pivotTables[index];

// 不显示行的总计。
pivotTable.RowGrand = false;
pivotTable.ColumnGrand = false;

// 将第一个字段拖到行区域。
pivotTable.AddFieldToArea(PivotFieldType.Row, 1);
PivotField rowField = pivotTable.RowFields[0];
rowField.IsAutoSort = true;
rowField.IsAscendSort = true;

// 将第二个字段拖到列区域。
pivotTable.AddFieldToArea(PivotFieldType.Column, 0);
PivotField colField = pivotTable.ColumnFields[0];
colField.NumberFormat = "dd/mm/yyyy";
colField.IsAutoSort = true;
colField.IsAscendSort = true;

// 将第三个字段拖到数据区域。
pivotTable.AddFieldToArea(PivotFieldType.Data, 2);

pivotTable.RefreshData();
pivotTable.CalculateData();
// end of 源数据透视表

//保存 Excel 文件
wb.Save("output.xlsx");

输出

在 ASP.NET 中的 Excel 中创建数据透视表

C# 创建 Excel 数据透视表并按行排序

在上一节中,我们只是使用 Excel 电子表格中的数据创建了数据透视表。现在,我们将创建另一个数据透视表并对数据应用排序。以下代码示例按“SeaFood”行字段值创建数据透视表并对其进行排序。

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

// 获取 Excel 工作表的引用。
Worksheet sheet = wb.Worksheets[0];

PivotTableCollection pivotTables = sheet.PivotTables;

// 将数据透视表添加到 Excel 工作表。
int index = pivotTables.Add("=Sheet1!A1:C10", "E3", "PivotTable2");

// 访问新添加的数据透视表的实例。
PivotTable pivotTable = pivotTables[index];

// 不显示行的总计。
pivotTable.RowGrand = false;
pivotTable.ColumnGrand = false;

// 将第一个字段拖到行区域。
pivotTable.AddFieldToArea(PivotFieldType.Row, 1);
PivotField rowField = pivotTable.RowFields[0];
rowField.IsAutoSort = true;
rowField.IsAscendSort = true;

// 将第二个字段拖到列区域。
pivotTable.AddFieldToArea(PivotFieldType.Column, 0);
PivotField colField = pivotTable.ColumnFields[0];
colField.NumberFormat = "dd/mm/yyyy";
colField.IsAutoSort = true;
colField.IsAscendSort = true;
colField.AutoSortField = 0;

// 将第三个字段拖到数据区域。
pivotTable.AddFieldToArea(PivotFieldType.Data, 2);

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

// 保存 Excel 文件。
wb.Save("output.xlsx");

输出

在 Excel 中创建和排序数据透视表

在 C# 中按列对 Excel 数据透视表进行排序

您还可以按列字段值对数据透视表中的数据进行排序。以下 C# 代码示例对“28/07/2000”列的字段值应用排序。

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

// 获取 Excel 工作表的引用。
Worksheet sheet = wb.Worksheets[0];

PivotTableCollection pivotTables = sheet.PivotTables;

// 将数据透视表添加到 Excel 工作表。
int index = pivotTables.Add("=Sheet1!A1:C10", "E3", "PivotTable2");

// 访问新添加的数据透视表的实例。
PivotTable pivotTable = pivotTables[index];

// 不显示行的总计。
pivotTable.RowGrand = false;
pivotTable.ColumnGrand = false;

// 将第一个字段拖到行区域。
pivotTable.AddFieldToArea(PivotFieldType.Row, 1);
PivotField rowField = pivotTable.RowFields[0];
rowField.IsAutoSort = true;
rowField.IsAscendSort = true;
colField.AutoSortField = 0;

// 将第二个字段拖到列区域。
pivotTable.AddFieldToArea(PivotFieldType.Column, 0);
PivotField colField = pivotTable.ColumnFields[0];
colField.NumberFormat = "dd/mm/yyyy";
colField.IsAutoSort = true;
colField.IsAscendSort = true;

// 将第三个字段拖到数据区域。
pivotTable.AddFieldToArea(PivotFieldType.Data, 2);

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

// 保存 Excel 文件。
wb.Save("output.xlsx");

输出

在 Excel 的数据透视表中隐藏数据

在 C# 中的 Excel 中隐藏数据透视表行

您可以根据要应用的某些条件隐藏 Excel 数据透视表中的行。以下代码示例展示了如何使用 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;

// 按降序对值进行排序
PivotField field = pivotTable.RowFields[0];
field.IsAutoSort = true;
field.IsAscendSort = false;
field.AutoSortField = 0;

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

// 隐藏值小于 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();

// 保存 Excel 文件
workbook.Save("PivotTableHideAndSort.xlsx");

查看 Aspose.Cells for .NET 的 文档,了解有关如何在任何基于 .NET 的应用程序中使用 C# 在 Excel 中使用数据透视表的更多详细信息。如有任何问题或疑问,请访问我们的 论坛

结论

在本文中,您学习了如何使用 C# 在 Excel 文件中创建数据透视表。此外,您还了解了如何使用 C# 在 Excel 中对数据透视表中的数据进行排序或隐藏。您可以使用 documentation 探索更多关于 Aspose.Cells for .NET 的信息。

也可以看看