0

.net のレポート ビューアーには、Word、PDF、Excel などのさまざまなエクスポート形式をサポートする優れた組み込みのエクスポート機能があります。ただし、私の ASP アプリケーションのマネージャーには、このエクスポート機能で複数の rdlc レポートを含む単一のエクスポート ファイルを生成して、単一のドキュメントを浮かせてコーヒーを飲み続けることができるようにしたいと考えています。エクスポートする必要があるレポートは、ビジネス ロジックに基づいて動的に決定されます。
フォーラムでこれを実現するための便利なコード スニペットを見つけました。

    protected void ExportReportsToWord(object Sender, EventArgs e)
    {
        // Variables
        Warning[] warnings;
        string[] streamIds;
        string mimeType = string.Empty;
        string encoding = string.Empty;
        string extension = string.Empty;

        // reportViewer1 and reportViewer2 are reports on my asp.net page
        byte[] bytes1 = reportViewer1.LocalReport.Render("WORD", null, out mimeType, out encoding, out extension, out streamIds, out warnings);
        byte[] bytes2 = reportViewer2.LocalReport.Render("WORD", null, out mimeType, out encoding, out extension, out streamIds, out warnings);

        //create a single byte array out of multiple arrays
        byte[] bytes = (bytes2.Concat(bytes1)).ToArray();

        // Now that you have all the bytes representing the Word report, buffer it and send it to the client.
        Response.Buffer = true;
        Response.Clear();
        Response.ContentType = mimeType;
        Response.AddHeader("content-disposition", "attachment; filename=" + "singleReport" + "." + extension);
        Response.BinaryWrite(bytes); // create the file
        Response.Flush(); // send it to the client to download
        Response.End();

    }

このコードは正常に準拠していますが、このコードを使用してエクスポートされたファイルは、Word 文書を開いたときにまだ 1 つのレポートしか表示されません。ファイル サイズが大きいことは、他のレポートのデータも含まれている可能性が高いことを示しています。
誰かが問題の可能性を指摘できますか? 複数のrdlcレポートから単一の単語ファイルのエクスポートを生成できる場合は、まったく異なるアプローチを使用することについての提案も受け付けています。

4

2 に答える 2

1

簡単な解決策は、1つの大きなマスターレポートを作成することです。

サブレポートである各要素内にリストを作成します。

パラメータをマスターレポートに渡して、表示するレポートと非表示にするレポートを決定します。

このようにして、ユーザーは表示するレポートを選択でき、SSRSが標準レポートに提供するすべての機能を利用できます。

于 2012-08-01T19:48:52.177 に答える
1

こんにちは、これらすべてのレポートを子レポートとして含む 1 つのレポートを作成し、そのメイン レポートを Word 文書として上司に電子メールで送信するようにスケジュールすることをお勧めします。

于 2012-08-01T19:45:37.013 に答える