在本文中,您將了解如何使用 C# 在 Excel 中創建數據透視表。此外,我們還將介紹如何使用 Aspose.Cells for .NET 以編程方式對數據透視表數據進行排序或隱藏 - 這是一種 .NET API,無需 Microsoft Excel 即可創建和操作 Excel 電子表格。

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 中的數據透視表中排序或隱藏數據。您可以使用 文檔 探索更多關於 Aspose.Cells for .NET 的信息。

也可以看看