在 excel 中,对透视表数据进行分组可以将相似的数据归类为有意义的类别,从而更直观地分析数据。例如,按月或按年对日期分组,可以清晰地了解数据随时间变化的趋势;将数字按价格区间或年龄段分组,有助于直观呈现数据分布特点并便于对比和分析。本文将详细讲解如何使用 spire.xls for .net 在 c# 基于日期和数字对 excel 透视表数据进行分组。
安装 spire.xls for .net
首先,您需要将 spire.xls for .net 包含的 dll 文件作为引用添加到您的 .net 项目中。dll 文件可以从此链接下载,也可以通过 安装。
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 天的临时许可证。