レポートのエクスポート
WebViewerコントロールはProfessionalエディション固有の機能なので、Standardエディションでは利用できません。
StandardエディションでWebアプリケーションにActiveReportsを組み込みたい場合、エクスポート機能を使用します。
エクスポート機能をWebアプリケーションに組み込む方法は後ほど説明することにして、まずは、エクスポート機能の概要を説明します。
エクスポート
ActiveReportsで作成したレポートは、PDFやExcelなどの形式に変換できます。このようにレポートを変換して出力することを「エクスポート」といいます。
エクスポート可能な形式・組み合わせ
ActiveReportsではさまざまな形式へのエクスポートが可能ですが、セクションレポートとページレポートそれぞれでエクスポートできる形式に違いがあります。以下の表やこちらのナレッジ文書を参照してください。
セクションレポート | ページレポート | |
---|---|---|
HTML | ○ | ○ |
○ | ○ | |
RTF | ○ | ○ |
Microsoft Word(doc) | × | ○ |
TEXT | ○ | ○ |
イメージ(bmp、emf、gif、jpg、png) | △(別の手段で可能) | ○ |
Excel(xls、xlsx) | ○ | ○ |
XML | × | ○ |
TIFF | ○ | ○ |
エクスポートの処理
エクスポートを実行する場合、大きく分けて2つの方法があります。
1つめは、「エクスポートフィルタ」を使って実行する方法。もう一つは、ページレポートでPageDocumentクラスのRenderメソッドと形式毎の拡張機能クラスを使用する方法です。まずは、前者の方法から説明します。
エクスポートフィルタを使用する方法
セクションレポート、ページレポートの両方で、HTML、PDF、RTF、Text、Tiff、Excelの各形式にエクスポートすることができます。
使用方法はどの形式でも基本的に同じなので、ここではPDF形式へのエクスポートを例に説明します。手順は以下のようになります。
- セクションレポートを生成する。
- レポートを実行し、SectionReport.Documentオブジェクト(SectionDocument型)を生成する。
- エクスポートフィルタのオブジェクトを宣言する。
- エクスポートフィルタのExportメソッドでエクスポートを行う。
Dim rpt As New SectionReportSample rpt.Run() Dim exp As New GrapeCity.ActiveReports.Export.Pdf.Section.PdfExport exp.Export(rpt.Document, "出力ファイル名")
GrapeCity.ActiveReports.SectionReport rpt = new SectionReportSample(); rpt.Run(); GrapeCity.ActiveReports.Export.Pdf.Section.PdfExport exp = new GrapeCity.ActiveReports.Export.Pdf.Section.PdfExport(); exp.Export(rpt.Document, "出力ファイル名");
ページレポートの場合も基本的には同じですが、SectionDocumentのかわりにPageDocumentを使用する点が異なります。
Dim pageReport As New GrapeCity.ActiveReports.PageReport _ (New System.IO.FileInfo( "ページレポート.rdlx")) Dim pageDocument As _ New GrapeCity.ActiveReports.Document.PageDocument(pageReport) Dim exp As New GrapeCity.ActiveReports.Export.Pdf.Section.PdfExport exp.Export(pageDocument, "出力ファイル名")
GrapeCity.ActiveReports.PageReport pageReport = new GrapeCity.ActiveReports.PageReport (new System.IO.FileInfo( " ページレポート.rdlx")); GrapeCity.ActiveReports.Document.PageDocument pageDocument = new GrapeCity.ActiveReports.Document.PageDocument(pageReport); GrapeCity.ActiveReports.Export.Pdf.Section.PdfExport exp = new GrapeCity.ActiveReports.Export.Pdf.Section.PdfExport(); exp.Export(pageDocument, "出力ファイル名");
描画拡張機能を使用したエクスポート
描画拡張機能は、ページレポートについてのみ使用可能な機能であり、以下のような手順になります。
- ページレポートを生成する。
- PageDocumentオブジェクトを得る。
- 拡張描画機能のためのオブジェクトと、描画に必要な、FileInfo、Settings(オプション)などのオブジェクトを得る。
- PageDocument.Renderメソッドでエクスポートを行う。
Dim pageReport As New GrapeCity.ActiveReports.PageReport _ (New System.IO.FileInfo("レイアウトファイル.rdlx")) Dim pageDocument As _ New GrapeCity.ActiveReports.Document.PageDocument(pageReport) Dim exp As New GrapeCity.ActiveReports.Export.Pdf.Page.PdfRenderingExtension Dim provider As New GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider _ (New System.IO.DirectoryInfo("出力フォルダ名"), "出力ファイル名") pageDocument.Render(exp, provider)
GrapeCity.ActiveReports.PageReport pageReport = new GrapeCity.ActiveReports.PageReport (new System.IO.FileInfo( "ページレポート.rdlx")); GrapeCity.ActiveReports.Document.PageDocument pageDocument = new GrapeCity.ActiveReports.Document.PageDocument(pageReport); GrapeCity.ActiveReports.Export.Pdf.Page.PdfRenderingExtension exp = new GrapeCity.ActiveReports.Export.Pdf.Page.PdfRenderingExtension(); GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider provider = new GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider (new System.IO.DirectoryInfo("出力フォルダ名"), "出力ファイル名"); pageDocument.Render(ex, provider);
なお、エクスポート機能にはエクスポート結果に対してさまざまな設定を行うためのプロパティが用意されています。例えば、PDFエクスポート機能にはPDFファイルにパスワードを設定するプロパティや、印刷禁止などの属性を設定するプロパティが用意されています。これらの設定については製品ヘルプの[概念]-[エクスポート]-[エクスポートフィルタ]や、該当するクラスのクラスライブラリリファレンスを参照してください。
エクスポートが可能な形式の中で、Viewerコントロールにプレビューした時と近い表示が可能な形式は、PDF、Tiff、Imageなどです。その他の形式は、ファイル形式自体の制限や、出力されないコントロールがあることにより、Viewerコントロールにプレビューした結果とは、レイアウト的に異なる点が生じます。
例えば、ページレポートのWord形式へのエクスポートは、Matrixデータ領域の出力に対応していないため、Matrixの部分は空白になります。またHTMLエクスポートは、LineやShapeコントロールが出力されません。こうした制限事項については、製品付属のリリースノートにある[制限事項と注意点]-[エクスポート]を参照してください。
また、Excel形式へのエクスポートでは、仕様的な制限から、エクスポートした結果とViewerコントロールなどにプレビューした結果に違いが生じる場合があります。例えば、不要な行や列が入ることや、文字列が複数のセルに分割される、文字列の一部しか出力されないといった違いも生じます。これは、自由にレイアウトされたレポートをExcelのセルにあわせて自動的に変換するためであり、人間がExcelを使用して、直接レイアウトするほどの精度はありません。
製品ヘルプの[よくある質問]-[セクションレポート]-[エクスポート]の「Excelエクスポートの結果がずれる」のトピックにあるように、レイアウトを調整することでExcelへのエクスポート結果をViewerコントロールのプレビュー結果に近づけることは可能なので、そうした方法も検討してください。