.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レポートから単一の単語ファイルのエクスポートを生成できる場合は、まったく異なるアプローチを使用することについての提案も受け付けています。