如何使用 REST 导出 SSRS 2017 报告 API

How to export SSRS 2017 report using REST API

我已经设置了 SSRS 2017.I 需要使用他们的新 REST API 导出 SSRS 报告,我一直在查看 API 规范 here 但是我在 render/export 的 swagger 规范中找不到使用 HTTP 客户端进行报告的方法。 这个 Question 可能要求与我正在寻找的相同。

目前我知道微软提供的RestAPI中没有可用的方法here

还有一种方法可以利用 Url Access (SSRS)

生成报告

URL 访问 SQL Server Reporting Services (SSRS) 中的报表服务器使您能够通过 URL 请求向报表服务器发送命令。

URL 访问语法

URL 请求可以包含多个以任意顺序列出的参数。参数由和号 (&) 分隔,name/value 对由等号 (=) 分隔。

使用 URL Access

导出报告

您可以选择使用 rs:Format URL 参数指定呈现报告的格式。 HTML4.0 和 HTM5 格式(渲染扩展)将在浏览器中渲染,对于其他格式,浏览器将提示将报表输出保存到本地文件。

例如,要直接从本机模式报表服务器获取报表的 PDF 副本:

http://myrshost/ReportServer?/myreport&rs:Format=PDF  

您也可以使用语法

为此提供参数
http://myrshost/ReportServer?/activeusers&UserStatus=true&rs:Format=PDF

更多详情,您可以访问

https://docs.microsoft.com/en-us/sql/reporting-services/export-a-report-using-url-access

Selenium 的 .Net DLL 可用于调用报告,包括设置任何报告参数。

诀窍在于 ReportViewerControl 在 IFRAME 中发出参数和 "View Report" 按钮。 "ChroPath" Chromium 扩展可用于帮助获取页面中元素的完整 XPath 路径,但该路径实际上可能不适用于 Selenium APIs。

但是如果您 "set the focus" 进入 IFRAME:

# 从我的 Powershell 脚本中执行此操作...

#首先,切换到reportviewercontrol IFRAME:

[void] $seldriver.SwitchTo().frame(0)

...那么您应该能够访问 IFRAME 中的任何 HTML 元素 使用相对 XPath 查询 ala

$xpath = "//*[@id='ReportViewerControl_ctl04_ctl03_txtValue']"

要 运行 报表,您需要在 "View Report" 按钮上调用 Click 事件。

需要注意的是,ReportViewerControl 发出的 HTML 元素具有非常枯燥的连续生成的名称和 ID。但是使用 Selenium,您可以尝试以多种方式访问​​它们。

对于 Powershell 用户,"Selenium" powershell 模块很有用。但是您需要深入研究 .DLL 来处理诸如切换到 ReportViewerControl IFRAME 之类的事情。

我发现我需要做的另一件事是投入自由主义 睡眠 N #n 秒 命令让报告的部分完成呈现并被拉入它们的包含变量。

至少这是我在 Powershell 脚本中所做的。

我不确定 Selenium API 是否真的为页面呈现抛出任何事件,即使调用报告似乎本质上是一个异步操作。 Selenium API 理论上确实支持设置显式超时(以及隐式超时)等。

所以,在我的例子中,我想调用我的 SSRS 服务器上的所有报告,看看它们是否真的 运行。 Selenium 似乎是 "interact" 在 Web 浏览器中处理报告的好方法。

这似乎有些过时了。您可以直接从 API:

下载 .rdl 格式的报告

查看: https://app.swaggerhub.com/apis/danmonteiro/SSRS-ageradora/2.0#/Reports/GetReportContent

这是一个发回文件的示例url:

http://10.0.15.78/reports/api/v2.0/Reports(8bf3f3c9-8f72-4c1a-b9bb-54b8ff1d6729)/Content/$value

我刚刚在浏览器中针对报表服务器尝试了此操作,它立即询问我要将文件保存到哪里。