web-dev-qa-db-ja.com

C#からSSRSレポートを実行PDF

それで、これが私のデレマです。

タイトルはそれをすべて言います。 SSRSレポートをリモートで実行してPDFとして保存する方法に関するガイダンスが見つからないようです。

以下の記事をフォローしてみました。 ASP.NET CoreサイトでリファレンスとしてReporting Services(SSRS)を使用

ただし、サービス参照をプロジェクトに追加すると、一部のメソッドに誤った署名があるようです。

例えば。 rsExec.LoadReportAsync(report、null);

私の参照では、最初のパラメーターはTrustedUserHeaderオブジェクトです。

C#からSSRSレポートを実行する方法について、良い出発点はありますか?簡単な例は見つかりません。

8
JCircio

これを行うには、Microsoft.Reporting.Webformsと次のメソッドを使用します。

 using Microsoft.Reporting.WebForms;
 ...
 public byte[] ExportToExcel(string reportName, string[] paramNames, string[][] paramDic)
    {
        // Variables
        Warning[] warnings;
        string[] streamIds;
        string mimeType;
        string encoding;
        string extension;



        ReportViewer rv = new ReportViewer { ProcessingMode = ProcessingMode.Remote };
        rv.AsyncRendering = false;
        ServerReport sr = rv.ServerReport;
        sr.ReportServerUrl = new Uri("http://<server>/reportserver");
        sr.ReportPath = "/<report path>/" + reportName;

        if (paramNames.Length != 0)
        {
            List<ReportParameter> paramList = paramNames.Select((t, i) => new ReportParameter(t, paramDic[i])).ToList();
            rv.ServerReport.SetParameters(paramList);
        }

        return rv.ServerReport.Render("Excel", null, out mimeType, out encoding, out extension,
            out streamIds, out warnings);
    }

次に、byte配列をResponse経由でクライアントに送信するか、ファイルに保存して後で電子メールで送信/転送できます。

最初のパラメーターはレポートの名前、2番目はパラメーター名の配列、3番目はパラメーター値を含む配列の配列です。私はこの方法をキャリアの早い段階で書きましたが、今はこの方法では書きません。これを使用する場合、コードをリファクタリングして2つのパラメーターを取得します。reportNameと、パラメーターと呼ばれるディクショナリーなどのパラメーター値を管理するための辞書です。

8
Michael