GrapeCity ActiveReports for .NET 16.0J
ページ/RDLレポートの結合
ActiveReportsユーザーガイド > 基本操作 > ページレポート/RDLレポートの基本操作 > 高度なページ形式のレイアウトの作成 > ページ/RDLレポートの結合

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()

メモ: