导出到 Microsoft Excel

Excel 呈现扩展插件可呈现与 Microsoft Excel 97 和更高版本兼容的报表。将报表导出至 Excel 电子表格时,将会去掉一些布局和原始设计元素,如本主题所述。以 Microsoft Excel 格式呈现的报表为二进制交换文件格式 (BIFF)。由此呈现器生成的文件的内容类型为:application/vnd.ms-excel。由此呈现器生成的文件的扩展名为 .xls。

安全说明安全说明

定义 String 类型的参数时,系统将向用户显示一个可以使用任何值的文本框。如果报表参数未与查询参数关联,并且参数值包含在报表中,则报表用户可以向参数值中键入表达式语法、脚本或 URL,并将报表呈现为 Excel。如果其他用户查看报表并单击呈现的参数内容,则用户可能会无意中执行恶意脚本或链接。

若要降低无意中运行恶意脚本的风险,请仅从可信来源打开呈现的报表。有关保护报表安全的详细信息,请参阅 Securing Reports and Resources(保护报表和资源)。

Excel 格式的报表项

矩形、子报表、表体和数据区域呈现为一组 Excel 单元格。文本框、图像和图表必须呈现在一个 Excel 单元格内,这些元素可能会根据报表其余部分的布局进行合并。

图像、图表和线条虽然位于一个 Excel 单元格内,但是它们却位于单元网格的顶部。线条呈现为单元格边框。

分页

此呈现器仅支持逻辑分页符。对于每个明确定义的逻辑分页符,均会创建一个新的 Excel 工作表选项卡。

页面命名

如果在工作簿中仅有一个工作表(不包括文档结构图),则该工作表的名称即为报表名称。

如果在工作簿中存在多个工作表(不包括文档结构图),则这些工作表将被命名为 SheetX,其中 X 是工作簿中工作表的编号,例如,第五个工作表称为 Sheet5。

确定页大小

Excel 呈现扩展插件采用页面高度和宽度设置来确定要在 Excel 工作表中定义哪些纸张设置。Excel 会试图将 PageHeightPageWidth 属性设置与最常用的一种纸张大小相匹配。

如果未找到匹配项,Excel 将使用打印机的默认页面大小。如果页面宽度小于页面高度,则将页面方向设置为“纵向”;否则,将方向设置为“横向”。

工作表选项卡名称

将报表导出到 Excel 时,将分页符创建的报表页导出到不同的工作表。如果您提供了报表的初始页名称,默认情况下 Excel 工作簿的每个工作表将具有此名称。此名称显示在工作表选项卡上。

如果分页符创建的所有报表页都提供新页名称,每个工作表将具有相关的页名称。

Reporting Services 提供要对报表、数据区域、组和矩形设置的属性,帮助您创建可以自己希望的方式导出到 Excel 的报表。有关详细信息,请参阅 msdn.microsoft.com 上 Report Builder 3.0 文档中的了解 Reporting Services 中的分页方式 (Report Builder 3.0)

文档属性

Excel 呈现器会将以下元数据写入 Excel 文件。

报表元素属性

说明

Created

报表执行的日期和时间,格式为 ISO 日期/时间值。

Author

Report.Author

说明

Report.Description

LastSaved

报表执行的日期和时间,格式为 ISO 日期/时间值。

页眉和页脚

根据设备信息 SimplePageHeaders 设置,页眉可以按两种方式呈现:页眉可以呈现在每个工作表单元网格的顶部,或者位于实际 Excel 工作表表头部分。默认情况下,页眉呈现至 Excel 工作表的单元网格上。

页脚始终呈现至实际 Excel 工作表表尾部分,无论 SimplePageHeaders 设置的值如何。

Excel 表头和表尾部分最多支持 256 个字符,其中包括标记。如果超出此限制,则 Excel 呈现器将删除自表头和/或表尾字符串末尾开始的标记字符,以便减少总字符数。如果在删除所有标记字符后,字符串长度仍然超出最大限制,则系统会自右侧开始截断字符串。

SimplePageHeader 设置

默认情况下,设备信息 SimplePageHeaders 设置将设为 False;因此,页眉在 Excel 工作表图面上呈现为报表行。而包含页眉的工作表行将变成锁定的行。您可以冻结或解冻 Excel 中的窗格。如果选中**“打印标题”**选项,则这些页眉将自动设置为在每个工作表页上打印。

如果在 Excel 的“页面布局”选项卡上选中**“打印标题”选项,则页眉会在工作簿中每个工作表的顶部重复(文档结构图封面表除外)。如果在“报表表头属性”或“报表表尾属性”对话框中未选中“在首页上打印”“在最后一页上打印”**选项,则表头不会分别添加到第一页或最后一页。

页脚将呈现在 Excel 表尾部分。

由于 Excel 的局限性,文本框是唯一能呈现在 Excel 表头/表尾部分的报表项类型。

交互

Excel 支持一些交互元素。下面是对一些特定行为的说明。

显示和隐藏

Microsoft Excel 对导出报表项时如何控制隐藏和显示报表项存在局限性。包含可切换的报表项的组、行和列将呈现为 Excel 大纲。Excel 可创建在整个行或列范围内扩展和折叠行与列的大纲,这样会导致折叠那些本来不应该折叠的报表项。此外,Excel 的大纲符号会与重叠的大纲混合在一起。为解决这些问题,在使用 Excel 呈现扩展插件时将应用以下大纲规则:

  • 位于左上角可切换的报表项在 Excel 中仍然可以进行切换。与位于左上角可切换的报表项共享垂直或水平空间的可切换报表项在 Excel 中不能进行切换。

  • 若要确定数据区域将按行还是按列折叠,需确定控制切换的报表项的位置以及要切换的报表项的位置。如果控制切换的报表项出现在要切换的报表项之前,则项可以按行进行折叠。否则,项可以按列进行折叠。如果控制切换的报表项均匀地出现在要切换的区域的旁边和上方,则在呈现项时行可以按行折叠。

  • 若要确定小计在所呈现报表中的位置,呈现扩展插件将检查动态成员的第一个实例。如果对等静态成员紧靠在其上方,则假定该动态成员为小计。大纲将设置为指示这是摘要数据。如果动态成员没有静态同级,则该实例的第一个实例即为小计。

  • 由于 Excel 的局限性,大纲的嵌套级别最多不能超过 7 级。

文档结构图

如果报表中存在任何文档结构图标签,则会呈现文档结构图。文档结构图呈现为 Excel 的封面工作表,插在工作簿的第一个选项卡位置。该工作表称为“文档结构图”。

文档结构图中显示的文本由报表项或组的 DocumentMapLabel 属性决定。文档结构图标签按它们在报表中出现的顺序列出,自第一列的第一行开始。每个文档结构图标签单元的缩进深度级别数与报表中所出现的一样。每个缩进级别是通过在后续列中放置一个标签来表示的。Excel 最多可支持 256 个大纲嵌套级别。

文档结构图大纲呈现为可折叠的 Excel 大纲。大纲结构与文档结构图的嵌套结构相匹配。大纲的扩展和折叠状态从第二级开始。

结构图的根节点是报表名称 <reportname>.rdl,并且它是不可交互的。文档结构图链接字体是宋体 (10pt)。

钻取链接

文本框中出现的钻取链接在用于呈现文本的单元格中呈现为 Excel 超链接。图像和图表的钻取链接在呈现的图像上呈现为 Excel 超链接。单击钻取链接时,将打开客户端的默认浏览器并导航到目标的 HTML 视图。

超链接

文本框中出现的超链接在用于呈现文本的单元格中呈现为 Excel 超链接。图像和图表的超链接在呈现的图像上呈现为 Excel 超链接。单击超链接时,将打开客户端的默认浏览器并导航到目标 URL。

交互式排序

Excel 不支持交互式排序。

书签

文本框中的书签链接在用于呈现文本的单元格中呈现为 Excel 超链接。图像和图表的书签链接在呈现的图像上呈现为 Excel 超链接。单击书签后,将转至用于呈现标有书签的报表项的 Excel 单元格。

Excel 样式呈现

下面简要说明了项在 Excel 中的呈现方式。

调色板

Excel 可支持多达 56 种颜色的调色板。报表所用的前 56 种唯一颜色是在自定义调色板中定义的。如果报表所用的颜色多于 56 种,则呈现扩展插件会将所需颜色与调色板中已有的 56 种颜色中的一种进行匹配。Excel 的颜色匹配算法可用于将颜色与调色板中现有的颜色相匹配。

Excel 限制

由于 BIFF 的格式功能,Excel 对于导出的报表存在一些限制。最重要的限制包括:

  • 工作表的最大行数限制为 65,536 行。如果超出此限制,呈现器会显示错误消息。

  • 工作表的最大列数限制为 256 列。如果超出此限制,呈现器会显示错误消息。

  • 最大列宽限制为 255 个字符(或 1726.5 磅)。呈现器不会验证列宽是否小于此限制。

  • 最大行高为 409 磅。如果行内容导致行高超过 409 磅,则内容将被拆分并添加至下一行。

  • 单元格中的最大字符数限制为 32,767 个。如果超出此限制,呈现器会显示错误消息。

    备注

    Excel 工作表的单元格中大约显示 1000 个字符,但是可以在编辑栏中编辑允许的最大字符数。

  • 在 Excel 中并没有限定工作表的最大数量,但是诸如内存和磁盘空间等外部因素可能限制工作表的最大数量。在大纲中,Excel 最多只允许 7 层嵌套级别。

  • 如果控制另一个报表项是否切换的报表项不是位于要切换的报表项的上一或下一行/列,则还会禁用大纲功能。

Excel 文件的大小

在报表第一次导出并保存到 Excel 中时,它们并不会从 Excel 自动应用到其 *.xls 工作簿文件的文件优化中获益。如果文件较大,可能会导致电子邮件订阅和附件出现问题。若要减小导出的报表的 *.xls 文件的大小,请打开 *.xls 文件,然后重新保存工作簿。重新保存工作簿通常可以将其文件大小降低 40% 到 50%。

文本框和文本

对于文本框和文本有以下限制:

  • 内容为表达式文本框值不会转换为 Excel 公式。报表处理过程中会计算每个文本框的值。计算表达式会作为每个 Excel 单元格的内容导出。

  • 文本框呈现在 Excel 的一个单元格内。Excel 单元格中的单个文本仅支持字号、字体、效果以及字形格式。

  • Excel 中不支持文本效果“上横线”。

  • Excel 在单元格的左右两侧将默认添加大约 3.75 磅的填充量。如果文本框的填充设置小于 3.75 磅,并且其宽度仅足以容纳文本,则在 Excel 中文本可能换行。

    备注

    若要解决此问题,请增加报表中文本框的宽度。

图像

对于图像有以下限制:

  • 由于 Excel 不支持单个单元格的背景图像,因此将忽略报表项的背景图像。

  • Excel 呈现扩展插件仅支持表体的背景图像。如果报表中显示有表体背景图像,则该图像呈现为工作表的背景图像。

矩形

对于矩形有以下限制。

  • 报表表尾中的矩形不导出到 Excel 中。但是,表体或 tablix 单元等中的矩形将呈现为某个范围的 Excel 单元。

报表表头和表尾

对于报表表头和表尾有以下限制:

  • Excel 表头和表尾最多支持 256 个字符,其中包括标记。呈现扩展插件将在 256 个字符处截断字符串。

  • Reporting Services 不支持报表表头和表尾上的边距。在导出到 Excel 时,这些边距值将设置为零,并且包含多行数据的任何表头或表尾可能不打印多行,打印的行数取决于打印机设置。

  • 在导出到 Excel 时,表头或表尾中的文本框保持其格式设置,但不保持其对齐方式。导致出现此问题的原因在于,在报表向 Excel 呈现时对前导及尾随空格进行了修整。

合并单元

对于合并单元有以下限制:

  • 如果合并单元格,则自动换行功能可能不正常。如果行中存在任一合并单元格,并且所呈现的文本框具有 AutoSize 属性,则自动调整大小功能将会不正常。

Excel 呈现器主要是一种布局呈现器。其目的是为了在 Excel 工作表中尽可能接近地复制呈现的报表的布局,并且最终生成的单元可以合并到工作表中以便保留报表布局。合并的单元可能导致问题,因为 Excel 中的排序功能要求以一种非常具体的方式对单元进行合并,这样才能正确排序。例如,Excel 要求合并的单元的范围具有相同的大小以便进行排序。

如果可以对导出到 Excel 工作表的报表进行排序十分重要,则以下内容可帮助您减少 Excel 工作表中合并的单元的数目,这是影响 Excel 排序功能的常见原因。

  • 无法左对齐和右对齐项是合并的单元的最常见问题。请确保所有报表项的左边缘和右边缘都彼此对齐。使项对齐并且具有相同宽度将解决大多数此类情况中的问题。

  • 尽管您正确将所有项对齐,但在很少的一些情况下,还会发现某些列继续合并。这可能是在呈现 Excel 工作表时由内部单位转换和舍入导致的。在报表定义语言 (RDL) 中,您可以通过不同的度量单位(例如英寸、像素、厘米和磅)指定位置和大小。Excel 在内部使用磅。为了尽量减少转换以及在将英寸和厘米转换为磅时进行舍入而导致的不精确性,请考虑用磅指定所有度量单位,以便获得最直接的结果。一英寸等于 72 磅。

报表行组和列组

当导出到 Excel 时,包含行组或列组的报表包含空单元。请考虑一个按销售渠道和邮政编码对行分组的报表。每个渠道包含许多邮政编码,每个邮政编码列出了许多商店名称。下图显示了此报表。

当将报表导出到 Excel 时,邮政编码只出现在“邮政编码”列的一个单元中。根据文本在报表中的对齐方式(顶部、中、底部),该值将位于第一个单元、中间单元或最后一个单元中。其他单元为空。包含商店名称的列没有空单元。下图显示了报表导出到 Excel 之后的情况。添加红色的单元边界是为了进行强调。它们不是导出报表的组成部分。

这意味着,对于具有行组或列组的报表而言,在将其导出到 Excel 之后,必须先进行修改,然后才能在透视表中显示导出的数据。必须在缺少组值的单元中添加组值,以使工作表成为在所有单元中均具有值的平面表。下图显示了更新的工作表。

如果您创建某个报表的目的是为了将此报表导出到 Excel 以便对报表数据进行进一步分析,则应考虑不在报表中包含行组或列组。

在运行时更改报表

如果某个报表必须以多种格式呈现,并且不可能创建以您所需的所有格式呈现的报表布局,则可以考虑使用 RenderFormat 内置全局属性中的值,在运行时有条件地更改报表外观。这样,您可以根据用于在每种格式中获取最佳结果的呈现器,隐藏或显示报表项。有关详细信息,请参阅在表达式中使用内置的全局和用户字段引用 (Report Builder 3.0)

设备信息设置

您可以通过更改设备信息设置来更改此呈现器的某些默认设置。有关详细信息,请参阅 Reporting Services Device Information Settings(Reporting Services 设备信息设置)。

请参阅

概念

了解 Reporting Services 中的分页方式

了解呈现行为

比较不同报表呈现扩展插件的交互功能

呈现报表项

使用 Tablix 数据区域

更改历史记录

更新的内容

添加了有关导出包含行组和列组的报表的信息。