Previous topicNext topic
Help > 开发指南 > Excel > 邮件合并示例 >
如何对数据进行分组

使用 SpreadsheetControl 执行邮件合并时,可以根据数据字段(或多个数据字段)中的相同值将排序的数据拆分为多个组。此示例介绍如何基于绑定数据库中的数据生成发票(每个发票在单独的工作表中生成)。对数据记录进行排序和分组,以便每组记录表示一张单独的发票,并具有以下结构:显示常规订单信息的组标题、订单中的产品列表和显示订单总计的组页脚。

“如何:执行邮件合并”文档更详细地介绍了前两个步骤。

使用来自数据库的数据填充基础发票数据表表,使用 InvoicesTableAdapter 对象的 Fill 方法。

若要将“发票”视图指定为 SpreadsheetControl 中邮件合并的数据源,请将 IWorkbook.MailMergeDataSource 属性设置为 nwindDataSet 对象,将 IWorkbook.MailMergeDataMember 属性设置为“发票”字符串。
准备模板
运行应用程序。默认情况下,电子表格控件打开一个包含单个空工作表(“Sheet1”)的工作簿。通过以下步骤,您将此工作表转换为发票模板。

激活电子表格控件中的“邮件合并设计”视图,方法是单击“设计”组中“邮件合并功能区”选项卡上的“邮件合并设计视图”按钮。
通过从“字段列表”面板中拖动所需项目,将邮件合并域插入到模板单元格中。
指定“详细信息”范围以显示发票数据(此范围包含所有邮件合并域),并指定“标题”区域以在每张发票上方显示当前日期。
将邮件合并模式设置为“多张工作表”,以在单独的工作表中生成每张发票。

组数据

在此示例中,按订单对数据进行分组。为此,请按照以下步骤操作。

选择详细信息范围内的任何单元格,然后单击功能区中的排序字段按钮。
在调用的对话框中,单击新建,然后选择要用作数据排序条件的 OrderID 数据字段。此字段还将用作对数据进行分组的条件。
创建组标题以显示一组记录的常规信息。 在此示例中,每个组都是一个订单。因此,组标题应该是“B4:H12”范围,其中包含订单数据,例如订单 ID、客户、销售人员、日期、交货信息、要计费的公司等。该范围还包括一行,用作订购产品列表的标题。

选择“B4:H12”单元格范围,然后单击“邮件合并功能区”页面上“排序和组”组中的“组标题”按钮。这将调用“选择排序字段”对话框。 在此对话框中,选择“OrderID(升序)”排序字段,将其用作在合并文档中创建组的条件,然后单击“确定”。GroupHeader0 范围将显示在模板工作表中。

创建组页脚以在一组记录的末尾(在订单的末尾)显示总计。为此,请选择“B14:H16”范围,包括具有“小计”、“运费”和“总计”计算的行,单击功能区中的“组页脚”,然后在“选择排序字段”对话框中选择“OrderID(升序)”。GroupFooter0 范围将显示在模板工作表中。

只能在设置数据排序条件的详细信息范围内创建组页眉和组页脚。您可以为详细信息范围内的不同排序字段创建多个组页眉和页脚。

当电子表格控件按指定的排序字段对数据进行分组时,它还会按指定的顺序按此字段对组进行排序。要对组中的记录进行排序,请在详细信息范围中添加辅助排序条件。

如何在模板中保存组页眉和页脚

邮件合并模板中指定的每个组页眉或组页脚范围分别存储为“GROUPHEADER(n)”或“GROUPFOOTER(n)”定义的名称,其中 (n) 是整个模板中组页眉或组页脚的从零开始的索引。指定为组页眉或组页脚的单元格区域设置为“定义名称.引用到”属性,用于创建组页眉或页脚的排序字段设置为“定义名称.注释”。

例如,如上所述指定排序条件、组页眉和组页脚后,以下定义的名称将添加到模板工作表的 Worksheet.DefinedNames 集合中。


获取结果

单击“邮件合并预览”按钮以查看结果。每个订单都插入到单独的工作表中。