跳至主要内容

在 Power BI 中创建分页报表:分步指南

学习如何使用 Power BI Report Builder,从设置到设计与发布,创建像素级精确的分页报表。
· 14分钟 阅读

使用 AI 探索

Power BI 的分页报表旨在生成精确的固定布局文档,适合打印与导出;而常规的 Power BI 报表更侧重于用于屏幕数据探索的交互式可视化。

在本文中,我将向您展示如何使用Power BI Report Builder(一款用于创建 Power BI 分页报表的独立工具)构建分页报表。 

什么是分页报表?

分页报表面向导出或打印,与展示动态可视化和图表的 Power BI Desktop 报表不同。您还可以将分页报表导出为 Excel、Word、PowerPoint、PDF、CSV、XML 等格式。

您会注意到,本文也会提到 Power BI Report Builder。之所以提到它,是因为它正是用于创建分页报表的工具。Power BI Desktop 用于构建带有动态可视化的交互式报表,而 Report Builder 专注于精确的版式、结构化表格和多页布局。也就是说,Report Builder 的职责是确保最终报表无论以何种方式导出,外观都保持一致。

设置 Power BI Report Builder

在继续之前,请确保您已安装 Power BI Report Builder。它免费且无需许可证。登录后,Power BI Report Builder 可与 Power BI Online 服务协同工作。 

  • 前往 Power BI Report Builder 页面右上角,单击登录按钮。
  • 弹出登录窗口后,输入您的电子邮件。
  • 如果您没有 Power BI 帐户,请根据提示注册一个免费帐户。

Image showing the sign in button at the top right hand corner of Power BI Report Builder

在 Power BI Report Builder 中连接数据源

您可以连接到组织使用的任何数据源:

  • 转到数据选项卡,然后单击获取数据(预览)。
  • 当获取数据窗口打开时,查找您的数据源。
  • 如果未看到该数据源,请单击查看更多以访问更多选项。

Image showing the list of popular data sources on the Get data window.

本文将使用 AdventureWorks2022 示例数据库和 Microsoft SQL Server 演示如何使用 Power BI Report Builder 构建分页报表。

  • 转到报表数据窗格,然后右键单击数据源文件夹。

  • 单击添加数据源以打开数据源属性窗口。

  • 在数据源属性窗口中,将连接类型选择为"Microsoft SQL Server"。

  • 将数据源重命名为AdventureWorks2022。

  • 将您的Microsoft SQL Server 连接凭据粘贴到连接字符串字段中。

  • 单击确定以保存数据源。

Image showing how to fill the connection string field and connect to the microsoft sql server database.

创建与自定义数据集

数据源(Data Sources)是您获取数据的地方,而数据集(Datasets)是由 Report Builder 基于数据源构建的数据子集。下面我们来看如何使用查询设计器从数据源创建数据集。

在分页报表中使用查询设计器 

查询设计器会使用数据源对应的语言从数据源中提取数据集。比如您的数据源是 Power BI 数据集,那么查询设计器会使用DAX 提取数据。同样,如果来自 Microsoft SQL Server,查询设计器将使用 SQL 作为查询语言。

让我们动手创建一份销售报表。该报表将包含每个产品的总销售额,并展示产品线、类别和颜色。

  • 转到报表数据窗格,然后右键单击数据集文件夹。

  • 单击添加数据集以打开数据集属性窗口。

  • 在名称字段中输入AdventureWorks2022_sales。

  • 在数据源字段中,选择AdventureWorks2022 数据库。

Image showing the query tab of the dataset properties window of power bi report builder

在查询字段中输入以下 SQL,从 AdventureWorks2022_sales 中选择不同变量。

SELECT
	Sales.SalesOrderDetail.ProductID,
	Production.Product.Name,
	Production.Product.ProductLine,
	Production.Product.Class,
	Production.Product.Color,
	SUM(Sales.SalesOrderDetail.OrderQty) AS Quantity,
	SUM(Sales.SalesOrderDetail.UnitPrice) AS UnitPrice,
	SUM(Sales.SalesOrderDetail.UnitPriceDiscount) AS Discount,
	SUM(Production.Product.StandardCost) AS CostPrice,
	SUM(Sales.SalesOrderDetail.LineTotal) AS LineTotal
FROM
	Sales.SalesOrderDetail
LEFT JOIN
	Production.Product
	ON Sales.SalesOrderDetail.ProductID = Production.Product.ProductID
GROUP BY
	Sales.SalesOrderDetail.ProductID,
	Production.Product.Name,
	Production.Product.ProductLine,
	Production.Product.Class,
	Production.Product.Color
ORDER BY
	SUM(Sales.SalesOrderDetail.UnitPrice) DESC;

手写 SQL 查询是一种良好实践,这样可以完全掌控数据库关系。要查看代码是否无误运行,请在数据集属性窗口中单击验证查询。

Image showing the query tab of the dataset properties window with the pasted sql query to query the dataset from our data source.

现在,在数据集属性窗口中,单击查询设计器按钮将其打开。若未看到 SQL 查询字段,请确保以文本编辑按钮处于高亮状态。单击感叹号(!)以运行并预览查询。

插入表格

现在,开始插入表格:

  • 转到插入选项卡,然后单击表格向导图标。
  • 当表格向导窗口打开时,选择AdventureWorks2022_sales 数据集。
  • 单击下一步继续添加表格字段。
  • 将ProductLine 与Name 字段拖入行组窗格。
  • 将LineTotal 拖入值窗格。
  • 单击下一步继续。

Image showing how to arrange fields and select row or columns for the new table or matrix.

选择您偏好的报表布局,然后单击下一步。

Image displaying options to choose the layout of the table in the report body.

最后一步的预览窗口会给出报表布局的蓝图。如果对布局满意,请单击完成。如果还有更多字段要添加,您可以将其拖放到报表正文的表格布局中。

用于动态分页报表的参数 

查看报表的用户可能希望按某个字段筛选报表,例如按商品颜色筛选销售报表。这时就需要用到参数。报表参数是一组值,读者可以用它来控制报表。让我们基于产品颜色创建一个参数。 

  • 转到报表数据窗格,然后右键单击 AdventureWorks2022_sales 数据集。

  • 选择数据集属性。

  • 在数据集属性窗口中,转到参数选项卡。

  • 创建一个颜色参数:

    • 将参数名称设置为该参数的名称。

    • 将参数值设置为链接到查询。

Image showing how to add a query parameter name and value.

如果您想创建筛选器,请转到筛选器选项卡。这里我将为报表中的所有产品创建颜色筛选器。

  • 在表达式字段中输入表达式名 [Color]。

  • 在运算符字段中选择 =。

  • 在值字段中输入参数名 [@ProductColor],然后单击确定以应用筛选。

Image showing how to set a query parameter to filter for a dataset field.

如果您想进一步自定义参数(如我们的示例),可以将值定义为下拉列表,而不是输入文本。

  • 转到参数文件夹,然后右键选择参数属性。
  • 在参数属性窗口中,转到可用值选项卡。
  • 选择指定值以为参数定义预设值。
  • 添加您希望在下拉列表中显示的值。
  • 单击确定保存更改。

Image showing how to specify parameter values

设计报表布局

借助 Power BI Report Builder 设计画布,您可以设计报表的呈现方式。您可以自定义表格格式并使其更清晰,在各页中一致地添加组织徽标,并通过分页符控制报表页面的呈现。

构建多页报表的结构 

分页指报表的页数,会根据查询生成的数据集从单页到多页不等。在 Power BI Report Builder 中有两种查看报表的方式:报表正文与物理页面。

报表正文

报表设计中显示为白色空间的矩形容器称为报表正文。您可以扩展表格或报表正文以容纳报表中的项目。报表正文不决定页面大小,若正文尺寸超过页面大小,报表会跨多页。

Image showing how to resize the table to fit the report body.

物理页面

这是决定报表如何渲染的纸张尺寸。以下是访问并编辑报表页面属性的方法:

  • 右键单击报表正文,然后选择报表属性。
  • 当报表属性窗口打开后,根据需要自定义纸张尺寸、页边距和单位。

Image showing how to set the page properties under the reference tab of the report properties window.

如果您希望让行标题与列名跨页显示:

  • 在报表页面中选择表格,右键选择表格(Tablix)属性。
  • 在表格属性窗口中,将表名设为 "SalesSummary"。
  • 在行标题与列标题部分,勾选所有选项。单击确定。

Image showing how to set the row and column headers in a power bi report builder paginated report.

接下来,选择报表表格,然后:

  • 转到列组窗格,单击下拉菜单并选择高级模式。
  • 转到视图选项卡,勾选属性以显示各元素的属性。

Image showing the advanced mode button, properties check box and the properties window

在行组窗格中,选择对应于您希望在翻页时保持可见的行或列的各个静态成员:

  • 在属性窗格中,将RepeatOnNewPage 设为"True"。
  • 将KeepWithGroup 设为After。
  • 对相邻的四个成员按需重复上述步骤。

Image showing how to set the values for the repeatonnewpage and keepwithgroup properties field to "true" and "after" respectively.

在分页报表中添加静态与动态元素 

让我们通过添加报表标题、徽标,以及用于显示总体合计的文本来改进报表。

  • 下载AdventureWorks 徽标。
  • 转到插入选项卡,然后单击图像图标以打开图像属性窗口。
  • 在名称字段中输入 "AdventureWorksLogo"。
  • 单击导入按钮,定位到已保存的AdventureWorks徽标文件。
  • 选择该文件,然后单击确定。

Image showing how to change the name of an image on the image properties window.

单击徽标右侧的文本框,输入“AdventureWorks Sales Summary(AdventureWorks 销售汇总)”。如果没有文本框,请在插入选项卡中插入一个。

Image showing how to add a heading to the report body.

您会注意到列名、行名与数值的对齐并不统一,我们可以这样修正:

  • 选择表格列标题。
  • 转到开始选项卡,然后单击填充图标(位于边框组下)。
  • 选择黄色作为填充色。
  • 检查列名、行名与数值的对齐方式。
  • 选择四行全部。
  • 在段落组(开始选项卡)中单击左对齐。

Image showing how to center the column headers form the paragraph group of the home tab of the power bi report builder.

目前报表标题与徽标仅固定在一页。若要让徽标覆盖所有页面,您需要在插入选项卡中单击页面页眉图标,为报表正文添加页眉。

Image showing the report title and logo moved to the page header.

选择Line Total 列,然后转到开始选项卡。在“数字”组的下拉菜单中选择货币格式化为货币。

Image showing the number format group under the home tab of the power bi report builder.

以下是在表格上方添加文本框的方法:

  • 转到插入选项卡,然后单击文本框。

  • 在报表数据窗格中,展开数据集文件夹。

  • 将LineTotal 字段拖入文本框。

  • 选中文本框中的文本,右键选择文本框属性。

  • 在值字段中输入[Sum(LineTotal)],以便即使筛选后也显示总体行合计。

Image showing the general tab of the text box properties window.

然后在开始选项卡中:

  • 选择LineTotal 文本框。

  • 在数字组中,将其格式化为货币。

  • 单击文本框内部,在[LineTotal] 值上方输入 Total Sales。

Image showing  the line total text box

控制分页与分页符

分页符决定内容如何适配页面,它用于将报表分割为多个页面以便查看与打印。您可以将分页符应用到各种报表元素,从表格元素到图表,取决于您希望报表如何展示。 

对表格及其元素应用分页符

  • 选择报表中的表格,右键选择表格(Tablix)属性。
  • 在分页符选项部分,勾选在前面添加分页符。

这样可确保Total Sales Summary 显示在单独的一页,而表格从下一页开始。

Image showing how to add a page break to the table of the paginated report.

当您希望每页显示特定分组时,可以应用分页符,这样即使某个分组成员跨入下一页,下一位分组成员也会从新页开始。

  • 转到行组窗格,然后右键单击ProductLine。
  • 选择分组属性。
  • 在分组属性窗口中,转到分页选项卡。
  • 勾选每个分组实例之间以在表格的每个分组实例之间应用分页符。

Image showing the page breaks tab of the group properties window of power bi report builder.

为报表添加页码

以下是添加页码的方法:

  • 转到报表数据窗格,然后展开内置字段。

  • 将页码字段拖到报表正文的页脚。

  • 如果报表正文尚无页脚:

    • 转到插入选项卡。

    • 在页眉与页脚组下,选择页脚以添加。

  • 右键单击报表正文中的页码字段。

  • 选择表达式以打开表达式窗口。

现在,在表达式窗口中,

  • 定位到设置表达式位置:值字段。

  • 在表达式中,在=与Globals!PageNumber之间添加"Page " &,使其如下所示:

Image showing the expression window of a page number

为分页报表添加可视化

在报表中呈现数据之前,您可能希望先概括关键信息。例如,我们要插入一个图表,显示销售额最高的前五个产品。 

添加可跨多页的图表 

要添加显示销售额最高产品的图表,请按以下步骤操作:

  • 转到插入选项卡,然后单击图表图标。
  • 在下拉菜单中选择图表向导以打开。
  • 在图表向导中,选择包含销售数据的数据集。
  • 在下一个窗口中,将图表类型选择为条形图。单击下一步。

Image showing option to select a chart type.

  • 将Name 字段拖到分类窗格。
  • 将LineTotal 字段拖到值窗格。
  • 单击下一步预览图表。

Image showing how to arrange the chart fields in power bi report builder.

对图表应用排序

  • 选择图表,然后右键单击。
  • 转到类别组窗格。
  • 在Name 组上单击下拉菜单。
  • 右键单击Name 组,然后选择类别组属性。

Image showing the chart data pane with values, category groups, and series groups fields of the chart.

  • 在类别组属性窗口中,转到排序选项卡。
  • 在排序依据字段中输入 [LineTotal]。

  • 将顺序设为A 到 Z,以实现降序排序。

Image showing how to change the sorting options of the chart on the category group properties window.

对图表应用筛选

现在,让我们应用一些筛选:

  • 在类别组属性窗口中,转到筛选器选项卡。

  • 单击添加以创建新筛选器。

  • 在表达式字段中输入 [Sum(LineTotal)]。

  • 在运算符字段中选择Top N。

  • 在值字段中输入 5,以显示各产品线下销售额前五名。

  • 确保该表达式的数据类型设置为文本。

Image showing how to insert the appropriate values into the filter fields.

为打印就绪报表格式化可视化图表 

该条形图包含多个元素,如图表标题、图例、条形以及系列,您都可以分别进行自定义。

  • 双击条形图上的图表标题文本框。

  • 将文本替换为 Top 5 Product Sales。

  • 选中文本,然后单击加粗。

  • 将字体大小设置为11。

Image showing the new chart title "Top 5 Product Sales"

接着,选中图表上的 X 轴并应用货币格式。

Image showing the x-axis formatted into currency format

要更改图表条形的颜色:

  • 选择图表。
  • 转到属性窗格。
  • 展开图表部分。
  • 找到调色板选项,将其从Pacific 更改为Fire(例如)。

Image showing how to set values for chart palette form the properties pane.

请注意,如果您希望表格从新页开始,请确保已在图表或表格上应用分页符。我们之前已在表格上应用过分页符,因此无需在图表上再次设置。 

当然,如果您确实想对图表应用分页符,选择图表并进入其属性。在常规选项卡中可以设置分页。

Image showing the options to add a page break on the chart, from the general tab of the chart properties window.

预览与运行报表

您可以运行报表进行渲染,检查所有参数与格式是否按预期显示。

在分页报表中预览页面布局

单击运行图标(位于开始选项卡)即可实时预览报表。如果已对报表应用了参数,您应能在运行选项卡下方看到它们。 

前面我们仅为参数提供了两个值:黑色与白色。请在参数下选择Black 选项,然后单击查看报表(View Report)。

Image showing the view of the rendered paginated report.

以下是查看打印预览的方法。

  • 单击打印布局图标。
  • 如果图表未按预期显示,请不必担心——在导出中报表仍会正确呈现。
  • 使用导航组图标在页面间移动。
  • 要调整页面设置,请转到打印组并单击页面设置。

Image showing the print layout of the paginated report.

使用不同参数测试分页效果

我们在报表中仅添加了一个参数,即颜色。如果您还添加了其他参数,可以分别选择其值以查看报表的呈现效果。

Image showing the paginated report display when different parameter values are tested

请注意,目前报表受参数设置控制,所有值都依据所提供的参数进行筛选。若您希望查看完整销售报表,则需要禁用该参数。

发布与共享分页报表

您可以将分页报表以 PDF 或 Excel 等打印就绪格式提供给用户,或发布到 Power BI 服务。

将分页报表导出为 PDF 或打印就绪格式 

您可以单击导出按钮(位于运行选项卡)并选择所需的打印就绪格式来导出报表。 

Image showing options of print-ready formats to export the paginated report.

将分页报表发布到 Power BI 服务 

您可以将报表发布到 Power BI 服务并对用户开放访问:前往文件选项卡并单击发布。 

Image showing the Publish button under the File tab

在 Power BI 服务窗口中,选择一个要发布的工作区,并将名称设为“sales_summary”,然后单击发布。

Image showing the power bi service window

随后会显示发布成功的窗口。单击在 Power BI 中打开“我的工作区 - sales_summary”前往 Power BI 服务中的报表。

Image showing the successful publication of the power bi paginated report from power bi report builder to power bi service.

如果您的报表使用本地数据源(就像本文示例),则必须安装 Power BI 网关,以便在 Power BI 服务上访问和共享报表。Power BI 网关可连接到任何非云端数据源。

分页报表的最佳实践

以下是一些我的经验之谈,希望对您有帮助。

使用分页符提升可读性 

建议在报表元素之间应用分页符。

例如,您可以对数据分组应用分页符,正如我们构建的报表中所做的。每页承载一组唯一的产品线与类别组合。分页还会将表格断开并从新页开始,不会与其他重要信息重叠。

为大型数据集优化分页报表 

当需要处理大型数据集时,报表加载会变慢,甚至超时。您还可能遇到结果不一致与较差的用户体验。以下是优化大型数据集以适应分页报表的一些建议。

  • 使用查询优化技术:务必编写高效的SQL 查询。尽可能实施合适的索引并使用存储过程。 
  • 缓存:确保对数据集进行缓存以减少执行时间,并在非高峰时段安排缓存刷新。 
  • 实施数据分区:在处理时间序列数据时,使用基于日期的分区,并尝试将超大表拆分为较小的数据集。

设计提示

报表旨在让用户轻松理解信息。请始终选择最合适的图表来展示信息。处理时间数据时建议使用趋势图;处理分组数据时更适合使用条形图或柱状图。

在构建报表时,避免堆砌元素,并确保使用边界框合理对齐。处理复杂元素时,尽量扩展报表正文,并确保纸张尺寸可以容纳扩展。 

我建议您学习我们的 Power BI Fundamentals 技能路径,通过练习让这些设计理念变得驾轻就熟。

结语

运用本教程所学,帮助您用 Power BI 创建出色的报表。若要继续深入学习,您也可以参考我们非常实用的 Power BI 课程:

另外,也别忘了我们的 SQL 课程。精通 SQL 是成为 Power BI 分析师或 Power BI 开发者的重要组成部分。

Adejumo Ridwan Suleiman

作者

Adejumo Ridwan Suleiman

资深数据科学讲师兼生物统计学家,精通 Python、R 和机器学习。

分页报表常见问题

Power BI 报表与 Power BI Report Builder 有何区别?

Power BI 是用于创建展示业务 KPI 的动态报表的商业智能工具,而 Power BI Report Builder 更侧重于创建跨多页的打印就绪型详细报表。

什么是查询设计器(Query Designer)?

查询设计器(Query Designer)是 Power BI Report Builder 中的图形化窗口,它允许您探索数据库表并以交互方式构建 SQL 查询。

什么是报表参数?

报表参数允许用户控制他们查看报表数据的方式。

Power BI Report Builder 提供哪些可用的导出格式?

Power BI Report Builder 允许您将分页报表导出为多种格式,如 Word、Excel、PowerPoint、PDF、TIFF 文件、MHTML、CSV 和 XML。

我可以将 Power BI Report Builder 的报表发布到 Power BI 服务吗?

可以,您也可以通过 Power BI 服务将分页报表在线提供给用户。

主题