如何使用 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
我刚刚在浏览器中针对报表服务器尝试了此操作,它立即询问我要将文件保存到哪里。
我已经设置了 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
我刚刚在浏览器中针对报表服务器尝试了此操作,它立即询问我要将文件保存到哪里。