教程:生成基本表报表(报表生成器)
可以使用 SQL Server Reporting Services (SSRS) 中的报表生成器为 SQL 数据创建表格报表。 本教程展示了如何从示例销售数据创建基本表格报表。
在本教程中,你将了解:
- 按照向导步骤创建表格报表
- 标识表格数据的嵌入源
- 运行查询以获取数据值
- 整理和设置表格数据的格式,并添加总计
- 设计和存储报表
- 用 Microsoft Excel 查看导出的报表
完成本教程的估计时间是 20 分钟。
下图显示你在此教程中创建的表格报表:
先决条件
有关要求的详细信息,请参阅教程先决条件(报表生成器)。
使用表或矩阵向导创建报表。
可以使用“表或矩阵”向导创建表格报表。 向导有两种设计模式:报表和共享数据集。 在报表设计模式中,你可以在“报表数据”窗格中指定数据,在 Design Surface 上指定报表布局。 在共享数据集设计模式中,可以创建与他人共享的数据集查询。 在本教程中,你将使用报表设计模式。
启动向导并创建基本表格报表:
通过计算机、Reporting Services Web 门户或 SharePoint 集成模式启动报表生成器。
将打开“新建报表或数据集”对话框。 如果对话框未打开,请选择“文件”>“新建”。
选择“新建报表”选项卡,然后在右侧窗格中选择“表格或矩阵向导”:
指定数据连接
数据连接包含要连接到外部数据源(如 SQL Server 数据库)的信息。 通常会从数据源所有者处获取连接信息以及要使用的凭据类型。 要指定数据连接,可以使用来自报表服务器的共享数据源或创建仅在此报表中使用的嵌入数据源。
在本教程中,你将使用嵌入数据源。 若要了解有关使用共享数据源的详细信息,请参阅获取数据连接的备选方式(报表生成器)。
为数据连接创建嵌入的数据源:
在“选择数据集”页面中,选择“创建数据集”选项,然后选择“下一步”。
在“选择与数据源的连接”页面中,选择“新建”。
在“数据源属性”对话框中,在“常规”选项卡上设置以下属性:
将数据源的“名称”属性设置为 Product_Sales。
对于“选择连接类型”属性,请确认已选择“Microsoft SQL Server”。
对于“连接字符串”属性,输入以下值,其中
<servername>
为 SQL Server 的实例的名称:Data Source=<servername>
由于你将使用的查询会包含数据而不是从数据库检索数据,因此连接字符串不包含数据库名称。 有关详细信息,请参阅教程先决条件(报表生成器)。
切换到“凭证”选项卡,并选择数据源的首选访问方法。 根据需要输入凭证:
在“常规”选项卡上,选择“测试连接”以验证是否能连接到数据源。
应会看到一条弹出消息:“已成功创建连接”。请选择“确定”以清除弹出消息。
要完成数据源安装,选择“确定”。
要在向导中继续,选择“下一步”。
创建查询
在报表中,可以使用具有预定义查询的共享数据集,也可以创建仅在此特定报表中使用的嵌入数据集。 在本教程中,将创建一个嵌入数据集。
注意
在本教程示例中,由于查询包含了数据值,因此它不需要外部数据源。 此方法使查询相当长,但对于学习目的很有用。 在标准业务环境中,查询并不包含数据值。
按照以下步骤创建查询:
在“设计查询”页中,关系查询设计器处于打开状态。 在本教程中,你将使用基于文本的查询设计器:
选择“编辑为文本”。 基于文本的查询设计器将显示查询窗格和结果窗格。
将以下 Transact-SQL 查询粘贴到顶部字段:
SELECT CAST('2009-01-05' AS date) as SalesDate, 'Accessories' as Subcategory, 'Carrying Case' as Product, CAST(9924.60 AS money) AS Sales, 68 as Quantity UNION SELECT CAST('2009-01-06' AS date) as SalesDate, 'Accessories' as Subcategory, 'Tripod' as Product, CAST(1350.00 AS money) AS Sales, 18 as Quantity UNION SELECT CAST('2009-01-11' AS date) as SalesDate, 'Accessories' as Subcategory, 'Lens Adapter' as Product, CAST(1147.50 AS money) AS Sales, 17 as Quantity UNION SELECT CAST('2009-01-05' AS date) as SalesDate, 'Accessories' as Subcategory, 'Mini Battery Charger' as Product, CAST(1056.00 AS money) AS Sales, 44 as Quantity UNION SELECT CAST('2009-01-06' AS date) as SalesDate, 'Accessories' as Subcategory, 'Telephoto Conversion Lens' as Product, CAST(1380.00 AS money) AS Sales, 18 as Quantity UNION SELECT CAST('2009-01-06' AS date) as SalesDate,'Accessories' as Subcategory, 'USB Cable' as Product, CAST(780.00 AS money) AS Sales, 26 as Quantity UNION SELECT CAST('2009-01-08' AS date) as SalesDate, 'Accessories' as Subcategory, 'Budget Movie-Maker' as Product, CAST(3798.00 AS money) AS Sales, 9 as Quantity UNION SELECT CAST('2009-01-09' AS date) as SalesDate, 'Camcorders' as Subcategory, 'Business Videographer' as Product, CAST(10400.00 AS money) AS Sales, 13 as Quantity UNION SELECT CAST('2009-01-10' AS date) as SalesDate, 'Camcorders' as Subcategory, 'Social Videographer' as Product, CAST(3000.00 AS money) AS Sales, 60 as Quantity UNION SELECT CAST('2009-01-11' AS date) as SalesDate, 'Digital' as Subcategory, 'Advanced Digital' as Product, CAST(7234.50 AS money) AS Sales, 39 as Quantity UNION SELECT CAST('2009-01-07' AS date) as SalesDate, 'Digital' as Subcategory, 'Compact Digital' as Product, CAST(10836.00 AS money) AS Sales, 84 as Quantity UNION SELECT CAST('2009-01-08' AS date) as SalesDate, 'Digital' as Subcategory, 'Consumer Digital' as Product, CAST(2550.00 AS money) AS Sales, 17 as Quantity UNION SELECT CAST('2009-01-05' AS date) as SalesDate, 'Digital' as Subcategory, 'Slim Digital' as Product, CAST(8357.80 AS money) AS Sales, 44 as Quantity UNION SELECT CAST('2009-01-09' AS date) as SalesDate, 'Digital SLR' as Subcategory, 'SLR Camera 35mm' as Product, CAST(18530.00 AS money) AS Sales, 34 as Quantity UNION SELECT CAST('2009-01-07' AS date) as SalesDate, 'Digital SLR' as Subcategory, 'SLR Camera' as Product, CAST(26576.00 AS money) AS Sales, 88 as Quantity
在查询设计器工具栏上,选择“运行 (!)”:
该查询运行并显示 SalesDate、Subcategory、Product、Sales 和 Quantity 字段的结果集。
在结果集中,列标题基于查询中的名称。 在数据集中,列标题会成为字段名称并保存在报表中。 完成向导后,可以使用“报表数据”窗格查看数据集字段集合。
要在向导中继续,选择“下一步”。
将数据组织到组中
在选择要进行分组的数据字段时,可以设计一个表格,其中的行和列显示了详细数据和聚合数据。 在以下过程中,前两个步骤指定要在表格中显示的数据值,最后两个步骤将整理这些值。
在“排列字段”页面上将表格数据整理成组:
从“可用字段”框中,将“产品”字段和“数量”字段拖到“值”框中。 将“数量”字段放置于“产品”字段之后。
“数量”数据由 Sum 函数(即数值字段的默认聚合)自动聚合。 值为 [Sum(Quantity)]。
提示
可以选择 [Sum(Quantity)] 聚合旁边的下拉箭头,查看其他可用的聚合函数。 在本练习中,将聚合函数设置为 Sum。
将“销售”字段拖到“值”框,并将其置于 [Sum(Quantity)] 聚合之后。
Sum 函数聚合 Sales 数据。 值为 [Sum(Sales)]。
将 SalesDate 字段拖到“行组”框中,然后将“子类别”字段拖到“行组”框中。 将“子类别”字段放置到 SalesDate 字段之后。
要在向导中继续,选择“下一步”。
添加分类汇总行和总计行
创建组后,可以添加用于显示字段的聚合值的行并设置其格式。 可以选择是显示所有数据还是允许用户以交互方式展开和折叠已分组数据。
按照以下步骤为表格数据添加分类汇总和总计:
在“选择布局”页面上的“选项”下,配置以下选项:
选择“显示分类汇总和总计”选项。
选择“以下阻止的分类汇总”选项。
清除“展开/折叠组”选项。
在本教程中,创建的报表不会使用向下钻取功能,用户可通过此功能来展开父组层次结构来显示子组行和详细信息行。
选择“下一步”以预览表格,然后选择“预览”窗格。 运行报表时,应会看到演示表格布局的五行:
第一行对表格重复一次以显示列标题。
第二行将对销售订单中的每个行项重复一次,以显示产品名称、订单数量和行总计。
第三行对每个销售订单类别重复一次,以显示每个类别的小计。
第四行对每个订单日期重复一次,以显示每天的小计。
第五行对表重复一次,以显示总计。
选择“完成”。
报表生成器将表格添加到 Design Surface。 此表有五个列和五个行。 “行组”窗格显示三个行组:“SalesDate”、“Subcategory”和“Details”。 明细数据是由数据集查询检索的所有数据。
向导过程已完成,现在有一个包含示例数据的表格报表。 在以下部分中,你将设置特定表格数据的格式,以便以对读者有用的形式显示值。
表数据格式设置
报表生成器使用默认格式(如数字、日期、时间等)在报表中显示表格数据值。 可以使用“开始”选项卡上的格式设置功能更改表格数据的显示方式。
将货币价值格式化为当地货币而不是常规数字可能会有所帮助。 另一种方案适用于汇总短时间内值变化的表格数据。 仅以分钟或小时为单位显示数据,而不显示月份、日和年,这样更有用。
以下部分演示如何使用格式设置功能更改报表中表格日期的显示方式。 格式化文本框和占位符文本在“设计视图”中显示为示例值。
显示货币值
默认情况下,Sales 字段的汇总数据在表格报表中显示为常规数字。 通过应用货币格式可以更恰当地表示该值。
按照以下步骤将表格数据格式化为货币:
在“报表生成器”中,选择表格报表中的 Sales 列标题:
在“主文件夹”选项卡上的“数字”组中,选择“占位符样式”([123]),然后选择“示例值”:
在表格报表的 Sales 列中,多选包含
[Sum(Sales)]
值的四个单元格。在“主文件夹”选项卡上的“数字”组中,选择“货币” ($)。 所选单元格更改为使用货币格式显示数据值。
如果区域设置为“英语(美国)”,则默认示例文本以美元
[$12,345.00]
显示值。如果没有看到示例货币值,则请检查单元格的占位符样式。 在“主文件夹”选项卡上的“数字”组中,确认“占位符样式” ([123]) 选项设置为“样本值”。
在“主文件夹”选项卡上,选择“运行”以预览报表。
确认 Sales 列中的摘要值显示为货币。 以下是一个报表示例:
显示日期(月、日、年)
默认情况下,SalesDate 字段会显示日期(月、日、年)和时间(小时、分钟、秒)数据。 可以更改这些值的格式,以仅显示日期。
设置值的格式以只显示日期:
在“运行”选项卡上,选择“设计”以返回到设计视图。
在表格报表中,选择包含
[SalesDate]
值的单元格。在“主文件夹”选项卡上的“数字”组中,展开“格式”下拉菜单,然后选择“日期”:
单元格会显示示例日期
[1/31/2000]
。如果没有看到示例日期值,则请检查占位符样式。 在“主文件夹”选项卡上的“数字”组中,确认“占位符样式” ([123]) 选项设置为“样本值”。
在“主文件夹”选项卡上,选择“运行”以预览报表。
确认 SalesDate 列中显示的值仅为日期(月、日、年)。 以下是一个报表示例:
使用自定义日期格式
还可以为表格中的特定字段指定自定义格式:
在“运行”选项卡上,选择“设计”以返回到设计视图。
在表格报表中,转到之前包含
[SalesDate]
值的单元格。右键单击单元格,然后选择“文本框属性”:
在“文本框属性”对话框中,配置单元格格式:
在选项卡窗格中,选择“数字”。
在“类别”列表中选择“日期”。
在“类型”列表中,选择“2000 年 1 月 31 日”。
“示例”部分显示格式设置配置的预览。
选择“确定”以应用自定义格式。
表格单元格将更新为显示示例日期
[January 31, 2000]
。在“主文件夹”选项卡上,选择“运行”以预览报表。
确认 SalesDate 列中的值显示月份名称而不是月份数字。 以下是一个报表示例:
设置表格格式
除了对表格中的数据应用特定格式外,还可以配置整个属性,例如列宽、行高和表格标题。 以下部分演示了这些步骤。
更改列宽度
默认情况下,表中的每个单元格都包含一个文本框。 在呈现页面时,文本框将垂直扩展以容纳文本。 在呈现的报表中,每个行将扩展到行中呈现的最高文本框的高度。 Design Surface 上的行的高度不会影响已呈现报表中的行的高度。
要减少每个行占用的垂直空间量,请扩展列宽以容纳单个行的列中的文本框的预计内容。
按照以下步骤更改表格列的宽度:
在“运行”选项卡上,选择“设计”以返回到设计视图。
在 Design Surface 上,在表格中选择,以显示行和列控键。 控键沿表格边缘显示为灰色条。
按住并拖动控键以增加表格宽度。
提示
可以扩展 Design Surface 的宽度,以增加用于处理表格的可见区域。 当表格比 Design Surface 宽时,需要使用滚动条来查看完整的表格。
指向“子类别”和 Product 列之间的线条,以显示双箭头光标。
选择并拖动线条,以增加 Product 列的宽度。 增加宽度,使列中的产品名称在呈现的报表中显示在单行上。
在“主文件夹”选项卡上,选择“运行”以预览报表。
确认 Product 列中的值显示在单行上。 以下是一个报表示例:
自定义报表标题
报表标题将出现在报表的顶部。 可以将报表页眉放在报表标题中。 如果报表未使用页眉,则可以将标题置于报表正文顶部的文本框中。 在本教程中,你将使用自动放置在表体顶部的文本框。
可以通过多种方式自定义报表标题,例如使用不同的字形、文本大小和颜色。 标题的某些部分,甚至单个字符可以使用单独的格式。 有关详细信息,请参阅设置分页报表中文本框内文本的格式(报表生成器)。
按照以下步骤来自定义报表标题:
在“运行”选项卡上,选择“设计”以返回到设计视图。
在 Design Surface 上,选择“单击以添加标题”文本框。
在“单击以添加标题”文本框中,输入文本“产品销售”,然后在文本框外进行选择。
右键单击文本框,然后选择“文本框属性”。
在“文本框属性”对话框中,配置文本格式:
在选项卡窗格中,选择“字体”。
在“字体”列表中,选择“Arial”。
在“大小”列表中,选择“18pt”。
在“颜色”列表中,选择“蓝色” 。
对于“样式”,请选择“粗体”。
“示例”部分显示格式设置配置的预览。
选择“确定”以应用标题格式。
在“主文件夹”选项卡上,选择“运行”以预览报表。
确认表格会显示更新后的标题:
保存报表
将报表保存到报表服务器或计算机上。 如果不将报表保存到 Report Server 上,则许多 Reporting Services 功能(如子报表)将不可用。
按照以下步骤在报表服务器上存储报表:
选择“文件>”“另存为”。
在“另存为报表”对话框中,选择右窗格中的“最近使用站点和服务器”。
选择或输入你拥有保存报表权限的 Report Server 的名称。
此时将显示“正在连接到报表服务器”消息。 连接完成后,默认报表文件夹将打开。 报表服务器管理员指定了默认文件夹位置。
对于报表“名称”,请将默认值“无标题”,替换为 Product_Sales。
选择“保存”。
报表即已保存至报表服务器。 你连接的报表服务器的名称将显示在窗口底部的状态栏中。
将报表保存到计算机上
也可以将报表存储到计算机上:
选择“文件>”“另存为”。
依次选择“桌面”、“我的文档”或“我的电脑”,并浏览到要保存该报表的文件夹。
对于报表“名称”,请将默认值“无标题”,替换为 Product_Sales。
选择“保存”。
导出报表
可以将报表导出为不同的格式,例如 Microsoft Excel 和逗号分隔值 (CSV) 文件。 有关详细信息,请参阅导出分页报表(报表生成器)。
在本教程中,你将报表导出为 Excel 格式,并设置报表的属性以便为工作簿选项卡提供自定义名称。
设置 Excel 工作簿选项卡名称
按照以下步骤指定 Excel 工作簿选项卡名称:
选择“设计”返回设计视图。
选择“视图”选项卡,然后选择“属性”,以暴露“属性”窗格。
选择 Design Surface 上表格报表外的任何位置。
“属性”窗格中列出的项对应于在 Design Surface 上选择的位置。 对于此过程,需要在报表区域之外进行选择。
在“属性”窗格中,展开“其他”组,找到 InitialPageName 属性。
提示
如果未在“属性”窗格中看到属性,请选择窗格顶部的“按字母顺序”按钮,将所有属性按字母顺序排序。
对于 InitialPageName 属性,请输入工作簿选项卡名称 Product Sales Excel。
将报表导出到 Excel
通过以下步骤将报表导出到 Excel:
在“主文件夹”选项卡上,选择“运行”以预览报表。
在工具栏上,选择“导出”>“Excel”。
在“另存为”对话框中,浏览到要存储该文件的位置。
在“文件名称”中,输入 Product_Sales_Excel。
确认文件类型为 Excel (*.xlsx)。
选择“保存”。
在 Excel 中查看报表
现在可以在 Excel 中查看表格报表:
打开存储该工作簿的文件夹,并双击文件 Product_Sales_Excel.xlsx。
验证工作簿选项卡的名称是否为 Product Sales Excel。