在 Excel 中,对透视表数据进行分组可以将相似的数据归类为有意义的类别,从而更直观地分析数据。例如,按月或按年对日期分组,可以清晰地了解数据随时间变化的趋势;将数字按价格区间或年龄段分组,有助于直观呈现数据分布特点并便于对比和分析。本文将详细讲解如何使用 Spire.XLS for .NET 在 C# 基于日期和数字对 Excel 透视表数据进行分组。
安装 Spire.XLS for .NET
首先,您需要将 Spire.XLS for .NET 包含的 DLL 文件作为引用添加到您的 .NET 项目中。DLL 文件可以从此链接下载,也可以通过 NuGet 安装。
PM> Install-Package Spire.XLS
C# 基于日期对 Excel 透视表数据进行分组
Spire.XLS for .NET 提供了 IPivotField.CreateGroup(DateTime start, DateTime end, PivotGroupByTypes[] groupByArray) 方法,支持按日期和时间对数据透视表的特定字段的数据进行分组。
以下是该方法的参数说明:
- 起始日期和时间(DateTime start):指定分组的开始日期和时间。
- 结束日期和时间(DateTime end):指定分组的结束日期和时间。
- 分组类别数组(PivotGroupByTypes[] groupByArray):定义分组的类型,可按天、月、季度、年等分组。
以下是 Spire.XLS for .NET 支持的日期和时间分组类别:
- 天(Days)
- 月(Months)
- 季度(Quarters)
- 年(Years)
- 秒(Seconds)
- 分钟(Minutes)
- 小时(Hours)
以下是使用 Spire.XLS for .NET 基于日期和时间对数据透视表数据进行分组的具体步骤:
- 创建 Workbook 类的实例。
- 使用 Workbook.LoadFromFile() 方法加载 Excel 文件。
- 通过 Workbook.Worksheets[] 属性获取包含数据透视表的工作表。
- 使用 Worksheet.PivotTables[] 属性获取数据透视表。
- 通过 XlsPivotTable.PivotFields[] 属性获取要分组的字段。
- 创建两个 DateTime 实例,分别指定起始和结束日期时间。
- 创建一个 PivotGroupByTypes[] 数组,指定分组类别(例如按天和按月)。
- 调用 IPivotField.CreateGroup() 方法,根据指定的分组类别对选定字段的数据进行分组。
- 设置 XlsPivotTable.IsRefreshOnLoad 属性刷新数据透视表。
- 使用 Workbook.SaveToFile() 方法保存结果文件。
- C#
using Spire.Xls;
using Spire.Xls.Core.Spreadsheet.PivotTables;
using System;
namespace GroupDataInPivotTable
{
internal class Program
{
static void Main(string[] args)
{
// 创建 Workbook 实例
Workbook workbook = new Workbook();
// 加载 Excel 文件
workbook.LoadFromFile("示例1.xlsx");
// 获取第一个工作表
Worksheet sheet = workbook.Worksheets[0];
// 获取工作表中的第一个数据透视表
XlsPivotTable pt = sheet.PivotTables[0] as XlsPivotTable;
// 获取 “日期” 字段
PivotField ptField = pt.PivotFields["日期"] as PivotField;
// 指定起始和结束日期时间
DateTime start = new DateTime(2024, 1, 1);
DateTime end = new DateTime(2024, 10, 14);
// 创建分组类别数组,例如按天和按月
PivotGroupByTypes[] groupByTypes = new PivotGroupByTypes[]
{
PivotGroupByTypes.Days,
PivotGroupByTypes.Months
};
// 根据指定的分组类别对数据分组
ptField.CreateGroup(start, end, groupByTypes);
// 刷新数据透视表
pt.Cache.IsRefreshOnLoad = true;
// 保存结果文件
workbook.SaveToFile("日期分组.xlsx", FileFormat.Version2016);
workbook.Dispose();
}
}
}
C# 基于数字对 Excel 透视表数据进行分组
除了按日期和时间分组数据,Spire.XLS for .NET 还支持通过 IPivotField.CreateGroup(double startValue, double endValue, double intervalValue) 方法根据数字范围对数据进行分组。
以下是该方法的参数说明:
- 起始值(double startValue):指定分组的起始值。
- 结束值(double endValue):指定分组的结束值。
- 间隔值(double intervalValue):定义每个分组的间隔大小。
以下是使用 Spire.XLS for .NET 基于数字对数据透视表数据进行分组的具体步骤:
- 创建 Workbook 类的实例。
- 使用 Workbook.LoadFromFile() 方法加载 Excel 文件。
- 通过 Workbook.Worksheets[] 属性获取包含数据透视表的工作表。
- 使用 Worksheet.PivotTables[] 属性获取数据透视表。
- 通过 XlsPivotTable.PivotFields[] 属性获取要分组的字段。
- 使用 IPivotField.CreateGroup() 方法根据数字范围对选定字段的数据进行分组。
- 调用 XlsPivotTable.CalculateData() 方法计算数据透视表数据。
- 使用 XlsPivotTable.IsRefreshOnLoad 属性刷新数据透视表。
- 使用 Workbook.SaveToFile() 方法保存结果文件。
- C#
using Spire.Xls;
using Spire.Xls.Core.Spreadsheet.PivotTables;
namespace GroupDataInPivotTable
{
internal class Program
{
static void Main(string[] args)
{
// 创建 Workbook 实例
Workbook workbook = new Workbook();
// 加载 Excel 文件
workbook.LoadFromFile("示例2.xlsx");
// 获取第一个工作表
Worksheet pivotSheet = workbook.Worksheets[0];
// 获取工作表中的第一个数据透视表
XlsPivotTable pt = pivotSheet.PivotTables[0] as XlsPivotTable;
// 对 “销售额” 字段按数字范围分组
PivotField ptField = pt.PivotFields["销售额"] as PivotField;
ptField.CreateGroup(1500, 4500, 200);
// 计算数据透视表数据
pt.CalculateData();
// 刷新数据透视表
pt.Cache.IsRefreshOnLoad = true;
// 保存结果文件
workbook.SaveToFile("数字分组.xlsx", FileFormat.Version2016);
workbook.Dispose();
}
}
}
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。