Excel可以直接从 SQL Server Reporting Services (SSRS) 报表的 URL 地址取数据,无需手动打开报表、查询、再下载导出。最常用的方法是通过 Power Query(Excel 2016+ 内置,或 2010/2013 需安装插件) 从 Web 导入数据,并配合 SSRS 的 URL 参数指定输出格式。
下面给出具体操作方法和注意事项。
一、核心原理:SSRS 报表的 URL 参数
SSRS 报表可以通过 URL 直接访问,并支持指定渲染格式,例如:
&rs:Format=CSV → 返回纯文本 CSV 格式(适合 Power Query 解析)
&rs:Format=XML → 返回 XML 格式
&rs:Format=HTML4.0 → 返回 HTML 表格
&rs:Format=EXCEL → 返回 Excel 格式(但会启用的 Excel 打开,不适合直接作为数据源)
因此,如果想在 Excel 中获取数据,最推荐使用 CSV 格式,因为 Power Query 解析 CSV 非常稳定。
二、操作步骤(以 CSV 格式为例)
1. 获取报表的 URL 地址
打开 SSRS目标报表,复制报表的 URL(例如http://reportserver/Reports/Pages/Report.aspxItemPath=/MyReport)。

如果报表有参数,可以在 URL 中直接添加参数,例如 &Param1=Value1&Param2=Value2。
2. 修改 URL 以强制输出 CSV
在 URL 末尾添加 &rs:Format=CSV。
完整示例:
http://reportserver/Reports/Pages/Report.aspx?ItemPath=/MyReport&rs:Format=CSV
3. 在 Excel 中使用 Power Query 导入
Excel 2016+:点击「数据」→「获取数据」→「来自其他源」→「来自 Web」。

在弹出的对话框中输入上面构造的 URL,点击确定。
如果报表服务器需要 Windows 身份验证,在 Power Query 导航器中选择使用「Windows 凭据」登录。

连接成功后,Power Query 会识别 CSV 数据,然后点击「加载」即可将数据导入工作表。

注意:如果报表包含多个表格(Tablix),CSV 输出通常会合并为一张表,或者每个 Tablix 对应一个 CSV 块。Power Query 会尝试自动拆分,但可能不完美。此时可以使用 &rs:Command=Render 或 &rs:Format=XML 获取更结构化的数据。
三、其他可行方法
1. 使用 XML 格式(更结构化)
在 URL 末尾添加 &rs:Format=XML,返回 XML 数据。
Power Query 可以解析 XML 并展开节点,但需要稍微了解 XML 结构。
2. 使用 SSRS 的 Web 服务(SOAP / REST)
适用于需要程序化调用的场景,但配置较复杂。Excel 可以通过 Power Query 的「Web API」连接,但需要身份验证令牌或基本认证。
3. 直接连接报表背后的数据库
如果用户有访问数据库的权限,且只需原始数据,直接使用「来自 SQL Server」数据源更高效、更灵活。但这一点与“从报表地址取数据”不同。
四、常见限制与注意事项
问题 说明与解决方案
报表需要参数: 必须在 URL 中显式指定所有参数,否则 SSRS 会返回错误或提示输入。可以在 URL 中追加 &Param1=Value1。
身份验证失败: 如果报表服务器配置了 Windows 集成认证,Power Query 可自动使用当前 Windows 凭据;若为 Forms 认证,则需要先在浏览器中登录并获取 cookie,然后通过 Power Query 的 Web 连接器手动输入 cookie(较麻烦)。
报表内容过多导致超时: SSRS 对 CSV 输出有默认行数限制(如 10000 行),可在报表的 rs:Command=Render 中调整,或要求报表管理员修改配置。
Excel 工作表刷新: 设置 Power Query 的刷新频率(右键查询→属性→刷新设置),即可实现定时自动从 SSRS 拉取最新数据。

夜雨聆风