在本文中,您将学习如何使用 C# 在 Excel 中创建数据透视表。此外,我们还将介绍如何使用 Aspose.Cells for .NET 以编程方式对数据透视表数据进行排序或隐藏 - 一种无需 Microsoft Excel 即可创建和操作 Excel 电子表格的 .NET API。
Excel 中的数据透视表
用于生成和操作 Excel 电子表格的数字化和自动化解决方案已被广泛使用。 Excel 中的数据透视表广泛用于汇总和分析数据。而对数据透视表中的数据进行排序对于对 Excel 电子表格中的大量数据进行严格检查非常有用。数据透视表中的数据排序可用于按字母顺序(AZ 或 ZA)排列文本值的项目,或从最高到最低或最低到最高值(如果是数字)排列项目。
基于 Excel 数据透视表的重要性,本文旨在向您展示如何:
- 通过 C# 在 Excel 中创建数据透视表,
- 按行字段值对数据透视表进行排序,
- 按列字段值对数据透视表进行排序,
- 并隐藏数据透视表行。
对于演示,将在整个示例中使用以下示例 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");
输出
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");
输出
在 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");
输出
在 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 的信息。