SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

5分でわかるActiveReports帳票

5分でわかるActiveReports帳票(2013年度版)-Webアプリケーションとエクスポート

ActiveReports for .NET 7.0Jで作るサンプル帳票(8)

  • このエントリーをはてなブックマークに追加

エクスポートの結果を配信するWebアプリケーション

 これまでに説明したサンプルコードでは、レポートをファイルとして出力しておりましたが、エクスポートを行うメソッド(ExportやRenderメソッド)は、レポートをファイルだけではなく、ストリームへ出力することも可能です。

 エクスポートで得られたデータをMemoryStreamに保存すれば、そのデータをクライアント側に配信してブラウザに表示できます。この方法を用いることで、StandardエディションでもWebアプリケーションを構成できます。手順は以下のとおりです。

  1. MemoryStreamを生成する。
  2. レポートを生成する。
  3. レポートをエクスポートしてMemoryStreamに格納する。
  4. WebアプリケーションのResponseオブジェクトの機能を利用してクライアントに配信する。

 セクションレポートをPDFの形式で配信するコードは、以下のようになります。WebページのPage.Loadイベントや、ボタンのButton.Clickイベント等に記述します。

PDF形式でエクスポートしたファイルをクライアントに配信する処理(VB.NET)
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()
PDF形式でエクスポートしたファイルをクライアントに配信する処理(C#)
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と記述します。

エクスポートしたファイルを配信する処理(ファイルをダウンロードする)(VB.NET)
Response.AddHeader("content-disposition", "attachment;filename=ExportSample.pdf")
エクスポートしたファイルを配信する処理(ファイルをダウンロードする)(C#)
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の使用方法や新機能の一部を紹介いたしました。簡単な紹介ではございましたが、帳票開発の一助になれば幸いです。

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
5分でわかるActiveReports帳票連載記事一覧

もっと読む

この記事の著者

グレープシティ株式会社 ActiveReportsチーム(グレープシティカブシキガイシャ アクティブレポートチーム)

 宮城県仙台市に本社を構えるグレープシティでは、日本の業務に適したシステムをより早く開発するためのソフトウェアを提供しています。エンドユーザーの利用しやすさ、幅広いユーザー環境への対応、そして何よりプログラマの作業を軽減することを一番に目指しています。 ActiveReportsは、帳票開発に必要なあらゆる機能を備えた当社を代表するコンポーネントの1つ。1998年の発売以来、日本だけでなく全世界で多数の帳票開発者に使用されています。製品開発は同チームが中心になり、「日本仕様」の厳しい要望を実現することを目指しています。...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/7612 2015/07/23 16:16

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング