ActiveReportsでは、ページレポートおよびRDLレポートを1つのレポートに結合できます。ReportCombinerクラスは、レポートをサブレポートとしてメインレポートに追加します。また、レポートが追加された順序で結合されます。BuildReportメソッドを使うと、PageReportクラスのすべての機能を使用できます。また、結合する際に、改ページを挿入したり、2つのレポート間の間隔を指定したりするこができます。デフォルトでは、2つのレポート間に1インチの余白が設定されます。
以下のコードでは、3つのレポートを結合します。プロジェクトにGrapeCity.ActiveReports.Core.Renderingアセンブリを追加する必要があります。また、このコードにより、結合したレポートがPDF形式でエクスポートされるので、GrapeCity.ActiveReports.Export.Pdfアセンブリを追加してください。
Visual Basic.NET
Visual Basicコード |
コードのコピー
|
---|---|
Viewer1.LoadDocument(Application.StartupPath & "\..\..\PageReport1.rdlx") Dim combiner = New GrapeCity.ActiveReports.ReportsCore.Tools.ReportCombiner() Dim r1 = New GrapeCity.ActiveReports.PageReport() r1.Load(New System.IO.FileInfo("c:\temp\Report1.rdlx")) Dim r2 = New GrapeCity.ActiveReports.PageReport() r2.Load(New System.IO.FileInfo("c:\temp\Report2.rdlx")) Dim r3 = New GrapeCity.ActiveReports.PageReport() r3.Load(New System.IO.FileInfo("c:\temp\Report3.rdlx")) 'ページレポートを結合する場合、SetMargin0に設定し空白ページを抑制 combiner.SetMargin("0cm") 'サブレポート間のデフォルトのギャップも0cmに設定し空白ページを抑制 combiner.DefaultStep = "0cm" combiner.AddReport(r1) Dim options = New GrapeCity.ActiveReports.ReportsCore.Tools.LocationOptions options.Gap = "5in" '最初のレポートから5インチ間隔で2番目のレポートを追加します。 options.PageBreakBefore = True '改ページを挿入します。 combiner.AddReport(r2, options) combiner.AddReport(r3) 'PDF描画拡張機能 Dim pdfRe = New GrapeCity.ActiveReports.Export.Pdf.Page.PdfRenderingExtension() Dim provider = New GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider(New System.IO.DirectoryInfo("c:\temp\"), "CombinedReport") Viewer1.LoadDocument(combiner.BuildReport().Document) '結合されたレポートをビューワにロードします。 combiner.BuildReport().Document.Render(pdfRe, provider) '結合されたレポートをPDF形式で出力します。 |
C#
C#コード |
コードのコピー
|
---|---|
viewer1.LoadDocument(Application.StartupPath + @"\..\..\PageReport1.rdlx"); var combiner = new GrapeCity.ActiveReports.ReportsCore.Tools.ReportCombiner(); var r1 = new GrapeCity.ActiveReports.PageReport(); r1.Load(new System.IO.FileInfo(@"c:\temp\Report1.rdlx")); var r2 = new GrapeCity.ActiveReports.PageReport(); r2.Load(new System.IO.FileInfo(@"c:\temp\Report2.rdlx")); var r3 = new GrapeCity.ActiveReports.PageReport(); r3.Load(new System.IO.FileInfo(@"c:\temp\Report3.rdlx")); //ページレポートを結合する場合、SetMargin0に設定し空白ページを抑制 combiner.SetMargin("0cm"); //サブレポート間のデフォルトのギャップも0cmに設定し空白ページを抑制 combiner.DefaultStep = "0cm"; combiner.AddReport(r1); combiner.AddReport(r2, new LocationOptions() { PageBreakBefore = true, Gap = "5in" }); //最初のレポートから5インチ間隔で2番目のレポートを追加します。 combiner.AddReport(r3); //PDF描画拡張機能 var pdfRe = new GrapeCity.ActiveReports.Export.Pdf.Page.PdfRenderingExtension(); var provider = new GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider(new System.IO.DirectoryInfo(@"c:\temp\"), "CombinedReport"); viewer1.LoadDocument(combiner.BuildReport().Document); //結合されたレポートをビューワにロードします。 combiner.BuildReport().Document.Render(pdfRe, provider); //結合されたレポートをPDF形式で出力します。 |
次の手順は、結合されたレポートを修正する方法について説明します。
最初のレポート「r1」の後にレポート「r4」を追加するには、以下のコードのようにインデックス「1」を指定します。
C#コード |
コードのコピー
|
---|---|
combiner.Insert(1, r4, new LocationOptions());
report = combiner.BuildReport();
|
Visual Basicコード |
コードのコピー
|
---|---|
combiner.Insert(1, r4, New GrapeCity.ActiveReports.ReportsCore.Tools.LocationOptions()) report = combiner.BuildReport() |
C#コード |
コードのコピー
|
---|---|
combiner.AddRange(new PageReport[] {r1, r2, r3, r4 }, new LocationOptions()) report = combiner.BuildReport(); |
Visual Basicコード |
コードのコピー
|
---|---|
Dim reports As IEnumerable(Of GrapeCity.ActiveReports.PageReport) = {r1, r2, r3, r4} combiner.AddRange(reports, New GrapeCity.ActiveReports.ReportsCore.Tools.LocationOptions()) report = combiner.BuildReport() |
最初のレポートを削除するには、以下のコードのようにインデックス「0」を指定します。
C#コード |
コードのコピー
|
---|---|
combiner.RemoveAt(0); report = combiner.BuildReport(); |
Visual Basicコード |
コードのコピー
|
---|---|
combiner.RemoveAt(0) report = combiner.BuildReport() |
同様に、インデックス「1」を指定して、2番目のレポートを削除することができます。
レポート「r2」のすべてのインスタンスを削除するには、以下のようなコードを使用します。
C#コード |
コードのコピー
|
---|---|
combiner.RemoveAll(r2); report = combiner.BuildReport(); |
Visual Basicコード |
コードのコピー
|
---|---|
combiner.RemoveAll(r2) report = combiner.BuildReport() |
メモ: