web-dev-qa-db-ja.com

REST APIを使用してSSRS 2017レポートをエクスポートする方法

SSRS 2017を設定しました。新しいREST APIを使用してSSRSレポートをエクスポートする必要があります。API仕様 こちら を調べてきましたが、できますt swagger仕様で、HTTPクライアントを使用してそのレポートをレンダリング/エクスポートするメソッドを見つけますこれは 質問 たぶん私が探しているものと同じものを求めています。

9
Aarif

これまでのところ私が知っている現在、Microsoftが提供するRestAPIで利用可能なメソッドはありません here

rl Access(SSRS) を使用してレポートを生成する別の方法があります

SQL Server Reporting Services(SSRS)のレポートサーバーへのURLアクセスにより、URL要求を介してコマンドをレポートサーバーに送信できます。

URLアクセス構文

URL要求には、任意の順序でリストされている複数のパラメーターを含めることができます。パラメータはアンパサンド(&)で区切られ、名前と値のペアは等号(=)で区切られます。

URLアクセスを使用してレポートをエクスポートする

オプションで、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

5
Talha Junaid

Seleniumの.Net DLLを使用して、レポートパラメータを設定するなど、レポートを呼び出すことができます。

コツは、ReportViewerControlがIFRAME内のパラメーターと「レポートの表示」ボタンを発行することです。 「ChroPath」Chromium拡張機能を使用すると、ページ内の要素への完全なXPathパスを取得できますが、そのパスは実際にはSelenium APIで機能しない場合があります。

ただし、IFRAMEに「フォーカスを設定」した場合:

#これを行うPowershellスクリプトから...

#まず、reportviewercontrol IFRAMEに切り替えます。

[無効] $ seldriver.SwitchTo()。frame(0)

...その後、相対XPathクエリを使用してIFRAME内の任意のHTML要素にアクセスできるはずですala

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

レポートを実行するには、[レポートの表示]ボタンでClickイベントを呼び出します。

大きな注意点は、ReportViewerControlによって生成されたHTML要素が、かなり乾燥した、連続して生成された名前とIDを持っていることです。しかし、Seleniumを使用すると、さまざまな方法でそれらにアクセスすることができます。

Powershellユーザーには、「Selenium」Powershellモジュールが役立ちます。ただし、ReportViewerControl IFRAMEへの切り替えなどのために、.DLLにディップする必要があります。

私がする必要があるもう1つのことは、リベラルなsleep N #n secondsコマンドを投入して、レポートの一部のレンダリングを完了させ、それらを含む変数に引き込むことです。

少なくとも、Powershellスクリプトでこれを実行しました。

レポートの呼び出しは本質的に非同期アクションのように見えますが、Selenium APIが実際にページレンダリングのイベントをスローするかどうかはわかりません。 Selenium APIは、理論的には、明示的なタイムアウト(および暗黙のタイムアウト)の設定などをサポートしています。

したがって、私の場合、SSRSサーバー上のすべてのレポートを呼び出して、実際に実行されるかどうかを確認します。 Seleniumは、Webブラウザーでレポートと「対話」するための良い方法のようです。

1
user1390375