为 Reporting Services 移动报表准备 Excel 数据
注意
SQL Server Reporting Services 2019 之后的所有 SQL Server Reporting Services 版本已弃用 SQL Server 移动报表发布服务器。 该功能从 SQL Server Reporting Services 2022 和 Power BI 报表服务器开始已停止使用。
以下是准备移动报表要使用的 Excel 文件和工作表时,需要注意的一些事项︰
应做事项
- 每个数据集有一个工作表。
- 第一行包含列标题。
- 每一列的数据类型保持一致。
- 将 Excel 中单元格的格式设置为合适类型。
- 数据存放在工作表中,而不是在 Excel 的数据模型中。
- 在使用公式时,请确保使用相同的公式计算整个列。
- 使用 Excel 2007 或更高版本。
- 用扩展名 XLSX 保存 Excel 文件。
禁止事项
- 在数据集工作表中包含图像、图表、数据透视表或其他嵌入对象。
- 包含总计或计算的行。
- 导入时在文件已在 Excel 中打开。
- 通过添加货币或其他符号手动设置数字格式。
- 使用的工作簿包含在数据模型中存储的数据。
工作表
在为移动报表准备作为数据集的 Excel 文件时,请确保每个工作表只能有一个数据集。 每个单独的工作表作为一个独立的表导入到移动报表发布服务器。 导入后,将对具有相同名称的来自多个 Excel 源的工作表进行重命名,方法是在名称后追加递增的数字。 例如,如果工作簿有三个名为“MyWorksheet”的工作表。第二个和第三个工作表重命名为“MyWorksheet0”和“MyWorksheet1”。以下屏幕截图显示了可供导入的理想 Excel 工作表的前几行。
列标题
如前面的示例所示,第一行包含该列中指标的名称。 移动报表发布服务器将保留这些列标题,以方便在库元素设置中引用。 但列标题并不是必需的。 如果缺少列标题,移动报表发布服务器将使用 A,B,C,...,AA,BB,... 约定生成标题。
通过比较每一列中前两个单元格的数据类型,在导入 Excel 工作表时移动报表发布服务器会自动检测第一行的标题。 如果任何列中前两个单元格的数据类型不匹配,则视为第一行包含列标题。 因此,如果表具有数值类型的列标题,请用字符串为标题名称加上前缀,以便在导入过程中将其检测为标题。
单元
工作表数据集每一列中的单元数据应保持一致。 导入后,会为每一列分配数据类型。 移动报表发布服务器自动将数据类型检测为字符串、双精度(数值)、布尔值 (true/false) 或日期时间。 同一列中出现混合数据类型可能会导致检测不准确或完全失败。 此检测说明列标题可能为字符串类型。 应在 Excel 中正确设置单元格的类型,以确保移动报表发布服务器可以检测出所需的类型。 在前面的示例中,检测出六列的类型为:
- 日期时间列
- 字符串列
- 四个双精度列
如果某个工作表包含计算的单元格或公式,则仅将生成的显示值导入到移动报表发布服务器。
文件位置和刷新 Excel 数据
对于导入到移动报表发布服务器中的 Excel 文件,其存储位置不受限制。 但是,如果在导入后移动或重命名该文件,则无法通过“数据视图”中的“刷新所有数据”命令来刷新该数据。
注意
移动报表发布服务器不会自动刷新 Excel 数据。 可以通过移动报表发布服务器的“刷新”命令来刷新数据,但前提是文件没有移动。
日期
日期字段对于许多移动报表都至关重要,因此应在 Excel 中将单元格的格式正确设置为日期。 在某些情况下,需要转换。 下面是一些公式示例,用于在 Excel 中将单元格从文本转换为日期。
Week 24-2013=DATE(MID(A2,9,4),1,-2)-WEEKDAY(DATE(MID(A2,9,4),1,3))+MID(A2,6,2)*7
2013/03/21=DATEVALUE(A1)
2013-mar-12=DATEVALUE(RIGHT(A1,2)&"-"&MID(A1,6,3)&"-"&LEFT(A1,4))
转换单元格后,必须通过选择单元格或整列将其格式设置为日期。 然后,打开“上下文”菜单,选择“设置单元格格式”,然后从“类别”列表中选择“日期”。 还可以使用 Excel 文本分列向导将文本单元格转换为格式正确的日期。
不支持
如果工作表数据的格式不同于上述格式,则在导入时可能会导致不可预测的结果。 最好对 Excel 文件的工作表进行限制,即仅适用于移动报表正确格式的工作表。
Excel 工作表中的自定义对象(包括数据透视表、可视化功能以及图像)不能导入到移动报表发布服务器。