教程:生成基本表报表(报表生成器)

可以使用 SQL Server Reporting Services (SSRS) 中的报表生成器为 SQL 数据创建表格报表。 本教程展示了如何从示例销售数据创建基本表格报表。

在本教程中,你将了解:

  • 按照向导步骤创建表格报表
  • 标识表格数据的嵌入源
  • 运行查询以获取数据值
  • 整理和设置表格数据的格式,并添加总计
  • 设计和存储报表
  • 用 Microsoft Excel 查看导出的报表

完成本教程的估计时间是 20 分钟。

下图显示你在此教程中创建的表格报表:

本教程中所准备示例表格报表的屏幕截图,其中显示了产品销售数据。

先决条件

有关要求的详细信息,请参阅教程先决条件(报表生成器)

使用表或矩阵向导创建报表。

可以使用“表或矩阵”向导创建表格报表。 向导有两种设计模式:报表共享数据集。 在报表设计模式中,你可以在“报表数据”窗格中指定数据,在 Design Surface 上指定报表布局。 在共享数据集设计模式中,可以创建与他人共享的数据集查询。 在本教程中,你将使用报表设计模式。

启动向导并创建基本表格报表:

  1. 通过计算机、Reporting Services Web 门户或 SharePoint 集成模式启动报表生成器

    将打开“新建报表或数据集”对话框。 如果对话框未打开,请选择“文件”>“新建”

  2. 选择“新建报表”选项卡,然后在右侧窗格中选择“表格或矩阵向导”

    显示如何在表格或矩阵向导中选择“新建报表”的屏幕截图。

指定数据连接

数据连接包含要连接到外部数据源(如 SQL Server 数据库)的信息。 通常会从数据源所有者处获取连接信息以及要使用的凭据类型。 要指定数据连接,可以使用来自报表服务器的共享数据源或创建仅在此报表中使用的嵌入数据源。

在本教程中,你将使用嵌入数据源。 若要了解有关使用共享数据源的详细信息,请参阅获取数据连接的备选方式(报表生成器)

为数据连接创建嵌入的数据源:

  1. 在“选择数据集”页面中,选择“创建数据集”选项,然后选择“下一步”

  2. 在“选择与数据源的连接”页面中,选择“新建”

  3. 在“数据源属性”对话框中,在“常规”选项卡上设置以下属性:

    显示在“数据源属性”对话框中如何配置“常规”选项的屏幕截图。

    1. 将数据源的“名称”属性设置为 Product_Sales

    2. 对于“选择连接类型”属性,请确认已选择“Microsoft SQL Server”

    3. 对于“连接字符串”属性,输入以下值,其中 <servername> 为 SQL Server 的实例的名称:

      Data Source=<servername>  
      

      由于你将使用的查询会包含数据而不是从数据库检索数据,因此连接字符串不包含数据库名称。 有关详细信息,请参阅教程先决条件(报表生成器)

  4. 切换到“凭证”选项卡,并选择数据源的首选访问方法。 根据需要输入凭证:

    显示在“数据源属性”对话框中如何配置“凭证”选项的屏幕截图。

  5. 在“常规”选项卡上,选择“测试连接”以验证是否能连接到数据源。

    应会看到一条弹出消息:“已成功创建连接”。请选择“确定”以清除弹出消息。

  6. 要完成数据源安装,选择“确定”

  7. 要在向导中继续,选择“下一步”

创建查询

在报表中,可以使用具有预定义查询的共享数据集,也可以创建仅在此特定报表中使用的嵌入数据集。 在本教程中,将创建一个嵌入数据集。

注意

在本教程示例中,由于查询包含了数据值,因此它不需要外部数据源。 此方法使查询相当长,但对于学习目的很有用。 在标准业务环境中,查询并不包含数据值。

按照以下步骤创建查询:

  1. 在“设计查询”页中,关系查询设计器处于打开状态。 在本教程中,你将使用基于文本的查询设计器:

    “表格”或“矩阵”向导中“设计查询”页面的屏幕截图。

  2. 选择“编辑为文本”。 基于文本的查询设计器将显示查询窗格和结果窗格。

  3. 将以下 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
    
  4. 在查询设计器工具栏上,选择运行 (!):

    显示如何运行查询以查看结果集的屏幕截图。

    该查询运行并显示 SalesDate、Subcategory、Product、Sales 和 Quantity 字段的结果集。

    在结果集中,列标题基于查询中的名称。 在数据集中,列标题会成为字段名称并保存在报表中。 完成向导后,可以使用“报表数据”窗格查看数据集字段集合。

  5. 要在向导中继续,选择“下一步”

将数据组织成组

在选择要进行分组的数据字段时,可以设计一个表格,其中的行和列显示了详细数据和聚合数据。 在以下过程中,前两个步骤指定要在表格中显示的数据值,最后两个步骤将整理这些值。

在“排列字段”页面上将表格数据整理成组:

  1. 从“可用字段”框中,将“产品”字段和“数量”字段拖到“值”框中。 将“数量”字段放置于“产品”字段之后。

    “数量”数据由 Sum 函数(即数值字段的默认聚合)自动聚合。 值为 [Sum(Quantity)]。

    提示

    可以选择 [Sum(Quantity)] 聚合旁边的下拉箭头,查看其他可用的聚合函数。 在本练习中,将聚合函数设置为 Sum

  2. 将“销售”字段拖到“Values”框,并将其置于 [Sum(Quantity)] 聚合之后。

    求和函数聚合销售数据。 值为 [Sum(Sales)]。

  3. 将 SalesDate 字段拖到行组框中,然后将 Subcategory 字段拖到行组框中。 将“子类别”字段放置到 SalesDate 字段之后。

    显示如何排列表格数据字段的屏幕截图。

  4. 要在向导中继续,选择“下一步”

添加分类汇总行和总计行

创建组后,可以添加用于显示字段的聚合值的行并设置其格式。 可以选择是显示所有数据还是允许用户以交互方式展开和折叠已分组数据。

请按照以下步骤,为表格数据添加小计和总计:

  1. 在“选择布局”页面上的“选项”下,配置以下选项:

    显示如何为表格选择布局选项的屏幕截图。

    1. 选择“显示分类汇总和总计”选项。

    2. 选择“阻止,分类汇总位于下方”选项。

    3. 清除“展开/折叠组”选项。

      在本教程中,您创建的报表不使用可以让用户展开父组层次结构并显示子组行和详细行的向下钻取功能。

  2. 选择下一步以在预览窗格中查看表格。 运行报表时,应会看到演示表格布局的五行:

    • 第一行对表格重复一次以显示列标题。

    • 第二行将对销售订单中的每个行项重复一次,以显示产品名称、订单数量和行总计。

    • 第三行对每个销售订单类别重复一次,以显示每个类别的小计。

    • 第四行对每个订单日期重复一次,以显示每天的小计。

    • 第五行在表中重复一次,以显示总计数。

  3. 选择“完成”。

    报表生成器将表格添加到设计表面。 此表有五个列和五个行。 “行组”窗格显示三个行组:“SalesDate”、“Subcategory”和“Details”。 明细数据是由数据集查询检索的所有数据。

    在报表生成器的 Design Surface 上打开的新建表格报表的屏幕截图。

向导过程已完成,现在有一个包含示例数据的表格报表。 在以下部分中,你将设置特定表格数据的格式,以便以对读者有用的形式显示值。

格式化表格数据

报表生成器使用默认格式(如数字、日期、时间等)在报表中显示表格数据值。 可以使用“开始”选项卡上的格式设置功能更改表格数据的显示方式。

将货币价值格式化为当地货币而不是常规数字可能会有所帮助。 另一种方案适用于汇总短时间内值变化的表格数据。 仅以分钟或小时为单位显示数据,而不显示月份、日和年,这样更有用。

以下部分演示如何使用格式设置功能更改报表中表格日期的显示方式。 格式化文本框和占位符文本在“设计视图”中显示为示例值。

显示货币值

默认情况下,Sales 字段的汇总数据在表格报表中显示为常规数字。 通过应用货币格式可以更恰当地表示该值。

按照以下步骤将表格数据格式化为货币:

  1. 在“报表生成器”中,选择表格报表中的 Sales 列标题:

    显示如何在报表生成器中打开的表格报表中选择 Sales 列标题的屏幕截图。

  2. 在“主文件夹”选项卡上的“数字”组中,选择“占位符样式”([123]),然后选择“示例值”:

    显示如何在报表生成器中为占位符选择“样本值”选项的屏幕截图。

  3. 在表格报表的 Sales 列中,多选包含 [Sum(Sales)] 值的四个单元格。

  4. 在“主文件夹”选项卡上的“数字”组中,选择“货币” ($)。 所选单元格更改为使用货币格式显示数据值。

    显示如何将所选表格单元格的格式更改为以货币显示的屏幕截图。

    如果区域设置为“英语(美国)”,则默认示例文本以美元 [$12,345.00] 显示值。

    如果没有看到示例货币值,则请检查单元格的占位符样式。 在“开始”选项卡上的“数字”组中,确认“占位符样式” ([123]) 选项设置为“示例值”

  5. 在“主文件夹”选项卡上,选择“运行”以预览报表。

    确认 Sales 列中的汇总值以货币格式显示。 报告中的一个示例如下:

    显示表格报表部分内容的屏幕截图,其中销售数据以货币值而非普通数字显示。

显示日期(月、日、年)

默认情况下,SalesDate 字段会显示日期(月、日、年)和时间(小时、分钟、秒)数据。 可以更改这些值的格式,以仅显示日期。

设置值的格式以只显示日期:

  1. 在“运行”选项卡上,选择“设计”以返回到设计视图。

  2. 在表格报表中,选择包含 [SalesDate] 值的单元格。

  3. 在“主文件夹”选项卡上的“数字”组中,展开“格式”下拉菜单,然后选择“日期”

    显示如何将所选表格单元格的格式更改为仅显示日期的屏幕截图。

    单元格会显示示例日期 [1/31/2000]

    如果没有看到示例日期值,则请检查占位符样式。 在“开始”选项卡上的“数字”组中,确认“占位符样式” ([123]) 选项设置为“示例值”

  4. 在“主文件夹”选项卡上,选择“运行”以预览报表。

    确认 SalesDate 列中显示的值仅为日期(月、日、年)。 报告中的一个示例如下:

    显示表格报表的一部分的屏幕截图,其中只显示日期而不显示时间值。

使用自定义日期格式

还可以为表格中的特定字段指定自定义格式:

  1. 在“运行”选项卡上,选择“设计”以返回到设计视图。

  2. 在表格报表中,转到之前包含 [SalesDate] 值的单元格。

  3. 右键单击单元格,然后选择“文本框属性”

    显示如何打开所选单元格“文本框属性”对话框的屏幕截图。

  4. 在“文本框属性”对话框中,配置单元格格式:

    显示如何使用“文本框”属性将所选表格单元格的格式更改为自定义格式的屏幕截图。

    1. 在选项卡窗格中,选择“Number”

    2. 在“类别”列表中选择“日期”。

    3. 在“类型”列表中,选择“2000 年 1 月 31 日”

      “示例”部分展示您的格式设置配置的预览。

    4. 选择“确定”以应用自定义格式。

    表格单元格将更新为显示示例日期 [January 31, 2000]

  5. 在“主文件夹”选项卡上,选择“运行”以预览报表。

    确认 SalesDate 列中的值显示月份名称而不是月份数字。 报告中的一个示例如下:

    显示表格报表一部分的屏幕截图,其中日期以一月份名称

设置表格格式

除了对表格中的数据应用特定格式外,还可以配置整个属性,例如列宽、行高和表格标题。 以下部分演示了这些步骤。

更改列宽度

默认情况下,表中的每个单元格都包含一个文本框。 在呈现页面时,文本框将垂直扩展以容纳文本。 在呈现的报表中,每个行将扩展到行中呈现的最高文本框的高度。 Design Surface 上的行的高度不会影响已呈现报表中的行的高度。

要减少每个行占用的垂直空间量,请扩展列宽以容纳单个行的列中的文本框的预计内容。

按照以下步骤更改表格列的宽度:

  1. 在“运行”选项卡上,选择“设计”以返回到设计视图。

  2. 在 Design Surface 上,在表格中选择,以显示行和列控键。 控键沿表格边缘显示为灰色条。

    显示 Report Builder 中 Design Surface 上表格行和列控件的屏幕截图。

  3. 按住并拖动控键以增加表格宽度。

    提示

    可以扩展 Design Surface 的宽度,以增加用于处理表格的可见区域。 当表格比设计界面宽时,需要使用滚动条来查看完整的表格。

  4. 指向“子类别”和“产品”列之间的线条,以显示双箭头光标。

  5. 选择并拖动线条,以增加 Product 列的宽度。 增加宽度,使列中的产品名称在呈现的报表中显示在单行上。

  6. 在“主文件夹”选项卡上,选择“运行”以预览报表。

    确认“产品”列中的值显示在一行上。 报告中的一个示例如下:

    显示表格报表的一部分的屏幕截图,其中增加了 Product 列的宽度,以允许产品名称显示在单行上。

自定义报表标题

报表标题将出现在报表的顶部。 可以将报表标题放在报表页眉中。 如果报表未使用页眉,则可以将标题置于报表正文顶部的文本框中。 在本教程中,你将使用自动放置在表体顶部的文本框。

可以通过多种方式自定义报表标题,例如使用不同的字形、文本大小和颜色。 标题的某些部分,甚至单个字符可以使用单独的格式。 有关详细信息,请参阅设置分页报表中文本框内文本的格式(报表生成器)

按照以下步骤自定义报表标题:

  1. 在“运行”选项卡上,选择“设计”以返回到设计视图。

  2. 在设计界面上,选择“点击以添加标题”文本框。

    显示如何在设计界面上选择“单击以添加标题”框的屏幕截图。

  3. 在“单击以添加标题”文本框中,输入文本“产品销售”,然后在文本框外进行选择。

  4. 右键单击文本框,然后选择“文本框属性”。

  5. 在“文本框属性”对话框中,配置文本格式:

    1. 在选项卡窗格中,选择“字体”

    2. 在“字体”列表中,选择“Arial”

    3. 在“大小”列表中,选择“18pt”。

    4. 在“颜色”列表中,选择“蓝色” 。

    5. 对于“样式”,请选择“粗体”

      “示例”部分展示您的格式设置配置的预览。

    6. 请点击确定以应用标题格式。

  6. 在“主文件夹”选项卡上,选择“运行”以预览报表。

    确认表格会显示更新后的标题:

    显示表格报表更新标题的屏幕截图。

保存报表

将报表保存到报表服务器或计算机上。 如果不将报表保存到 Report Server 上,则许多 Reporting Services 功能(如子报表)将不可用。

按照以下步骤在报表服务器上存储报表:

  1. 选择“文件>”“另存为”。

  2. 在“另存为报表”对话框中,选择右窗格中的“最近使用站点和服务器”

  3. 选择或输入你拥有保存报表权限的 Report Server 的名称。

    此时将显示“正在连接到报表服务器”消息。 连接完成后,默认报表文件夹将打开。 报表服务器管理员指定了默认文件夹位置。

  4. 对于报表“名称”,请将默认值“无标题”,替换为 Product_Sales

  5. 选择“保存”。

报表即已保存至报表服务器。 你连接的报表服务器的名称将显示在窗口底部的状态栏中。

将报表保存到计算机上

也可以将报表存储到计算机上:

  1. 选择“文件>”“另存为”。

  2. 依次选择“桌面”“我的文档”或“我的电脑”,并浏览到要保存该报表的文件夹。

  3. 对于报表“名称”,请将默认值“无标题”,替换为 Product_Sales

  4. 选择“保存”。

导出报表

可以将报表导出为不同的格式,例如 Microsoft Excel 和逗号分隔值 (CSV) 文件。 有关详细信息,请参阅导出分页报表(报表生成器)

在本教程中,你将报表导出为 Excel 格式,并设置报表的属性以便为工作簿选项卡提供自定义名称。

设置 Excel 工作簿选项卡名称

按照以下步骤指定 Excel 工作簿选项卡名称:

  1. 选择“设计”返回设计视图。

  2. 选择“视图”选项卡,然后选择“属性”,以暴露“属性”窗格。

  3. 请选择设计界面中表格之外的任何位置。

    “属性”窗格中列出的项对应于在 Design Surface 上选择的位置。 对于此过程,需要在报表区域之外进行选择。

  4. 在“属性”窗格中,展开“其他”组,找到 InitialPageName 属性。

    提示

    如果未在“属性”窗格中看到属性,请选择窗格顶部的“按字母顺序”按钮,将所有属性按字母顺序排序。

  5. 对于 InitialPageName 属性,请输入工作簿选项卡名称 Product Sales Excel

    显示如何在“属性”窗格中为表格报表设置“初始网页名称”的屏幕截图。

将报表导出到 Excel

通过以下步骤将报表导出到 Excel:

  1. 在“主文件夹”选项卡上,选择“运行”以预览报表。

  2. 在工具栏上,选择“导出”>“Excel”

  3. 在“另存为”对话框中,浏览到要存储该文件的位置。

  4. 在“文件名称”中,输入 Product_Sales_Excel

  5. 确认文件类型为 Excel (*.xlsx)。

  6. 选择“保存”。

在 Excel 中查看报表

现在可以在 Excel 中查看表格报表:

  1. 打开存储该工作簿的文件夹,并双击文件 Product_Sales_Excel.xlsx

  2. 验证工作簿选项卡的名称是否为 Product Sales Excel