エクスポートの結果を配信するWebアプリケーション
これまでに説明したサンプルコードでは、レポートをファイルとして出力しておりましたが、エクスポートを行うメソッド(ExportやRenderメソッド)は、レポートをファイルだけではなく、ストリームへ出力することも可能です。
エクスポートで得られたデータをMemoryStreamに保存すれば、そのデータをクライアント側に配信してブラウザに表示できます。この方法を用いることで、StandardエディションでもWebアプリケーションを構成できます。手順は以下のとおりです。
- MemoryStreamを生成する。
- レポートを生成する。
- レポートをエクスポートしてMemoryStreamに格納する。
- WebアプリケーションのResponseオブジェクトの機能を利用してクライアントに配信する。
セクションレポートをPDFの形式で配信するコードは、以下のようになります。WebページのPage.Loadイベントや、ボタンのButton.Clickイベント等に記述します。
Dim m_stream As New System.IO.MemoryStream() Dim rpt As New SectionReportSample rpt.Run() Dim PdfExport1 As New GrapeCity.ActiveReports.Export.Pdf.Section.PdfExport PdfExport1.Export(rpt.Document, m_stream) m_stream.Position = 0 Response.ContentType = "application/pdf" Response.AddHeader("content-disposition", "inline;filename=MyExport.pdf") Response.BinaryWrite(m_stream.ToArray()) Response.End()
System.IO.MemoryStream m_stream = new System.IO.MemoryStream(); GrapeCity.ActiveReports.SectionReport rpt = new SectionReportSample(); rpt.Run(); GrapeCity.ActiveReports.Export.Pdf.Section.PdfExport pdfExport1 = new GrapeCity.ActiveReports.Export.Pdf.Section.PdfExport(); pdfExport1.Export(rpt.Document, m_stream); Response.ContentType = "application/pdf"; Response.AddHeader("content-disposition", "inline;filename=ExportSample.pdf"); Response.BinaryWrite(m_stream.ToArray()); Response.End();
この処理を実行すると、Internet Explorerなどのブラウザ上にPDFが表示されます。上記の処理はセクションレポートを使っていますが、ページレポートでも基本的には同様です。
なお、上記のコードの後半部分にあるResponseを使った処理は、ActiveReportsとは直接関係はありません。例えば、サーバー上に配置されたPDFファイルについてもその内容をMemoryStreamへ格納すれば、同様の方法でクライアントに配信できます。
"Content-Disposition"などの書式は、RFC2183などで規定されているのでそちらを参考にしてください。
「ブラウザ内で表示するのではなく、クライアントにダウンロードしてから表示する」場合には、Response.AddHeaderメソッドに指定する文字列の中で、inlineのかわりにattachmentと記述します。
Response.AddHeader("content-disposition", "attachment;filename=ExportSample.pdf")
Response.AddHeader("content-disposition","attachment;filename=ExportSample.pdf");
また、Excelファイルを配信する場合は、ContentTypeを"application/vnd.ms-excel"(.xls)もしくは"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"(.xlsx)とします。ContentTypeはMIMEタイプに準ずるものなので、各ファイル形式に適合するMIMEタイプを設定してください。
まとめ
今回はActiveReportsを使ったWebアプリケーションの構成方法について解説しました。またエクスポート機能は、Windowsフォームアプリケーションでもご利用いただけます。アプリケーションの要件にあわせてご活用ください。
全8回にわたって、ActiveReports for .NET 7.0Jの使用方法や新機能の一部を紹介いたしました。簡単な紹介ではございましたが、帳票開発の一助になれば幸いです。