前回作成したサンプルは、1つのセクションレポートファイル(SectionReport1.cs)にデータをBindし、Viewer画面で表示、PDFファイル出力していましたが、複数のセクションレポートフォーマットファイルにそれぞれデータをBindし、1つのレポートとしてViewer画面へ表示、PDFファイル出力するサンプルを作成しました。
ソースコードは GitHub で公開しています。
出力時は1つにしている複数のセクションレポートファイル
表紙部のセクションレポートファイル
明細部のセクションレポートファイル
サマリー部のセクションレポートファイル
レポートデザイナ編集用 .Net Framework系統のプロジェクト
ソースコードの変更内容を解説。
/SectionReportApplication1/Form1.cs
変数名を変更。
/SectionReportApplication1/SectionReportApplication1.csproj
表紙部、サマリー部のセクションレポートファイルを新規作成。
/SectionReportApplication1/SectionReportBackCover.cs
/SectionReportApplication1/SectionReportBackCover.Designer.cs
/SectionReportApplication1/SectionReportBackCover.resx
/SectionReportApplication1/SectionReportFrontCover.cs
/SectionReportApplication1/SectionReportFrontCover.Designer.cs
/SectionReportApplication1/SectionReportFrontCover.resx
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<EmbeddedResource Include="SectionReportFrontCover.resx"> <DependentUpon>SectionReportFrontCover.cs</DependentUpon> </EmbeddedResource> <EmbeddedResource Include="SectionReportBackCover.resx"> <DependentUpon>SectionReportBackCover.cs</DependentUpon> </EmbeddedResource> <Compile Include="SectionReportBackCover.cs"> <SubType>Component</SubType> </Compile> <Compile Include="SectionReportBackCover.Designer.cs"> <DependentUpon>SectionReportBackCover.cs</DependentUpon> </Compile> <Compile Include="SectionReportFrontCover.cs"> <SubType>Component</SubType> </Compile> <Compile Include="SectionReportFrontCover.Designer.cs"> <DependentUpon>SectionReportFrontCover.cs</DependentUpon> </Compile> |
リリース用 .Net Core系統のプロジェクト
ソースコードの変更内容を解説。
/WinFormsApp1/WinFormsApp1.csproj
「レポートデザイナ編集用 .Net Framework系統のプロジェクト」側で新規作成した、表紙部、サマリー部のセクションレポートファイルをリンクとして追加。
1 2 3 4 5 6 7 8 9 |
<Compile Include="..\SectionReportApplication1\SectionReportBackCover.cs" Link="SectionReportBackCover.cs" /> <Compile Include="..\SectionReportApplication1\SectionReportBackCover.Designer.cs" Link="SectionReportBackCover.Designer.cs" /> <Compile Include="..\SectionReportApplication1\SectionReportFrontCover.cs" Link="SectionReportFrontCover.cs" /> <Compile Include="..\SectionReportApplication1\SectionReportFrontCover.Designer.cs" Link="SectionReportFrontCover.Designer.cs" /> <EmbeddedResource Include="..\SectionReportApplication1\SectionReportBackCover.resx" Link="SectionReportBackCover.resx" /> <EmbeddedResource Include="..\SectionReportApplication1\SectionReportFrontCover.resx" Link="SectionReportFrontCover.resx" /> |
/WinFormsApp1/Form1.cs
セクションレポートのViewerに、表紙部、明細部、サマリー部のセクションレポートファイルを結合して表示する処理を追加。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
var sectionReportFrontCover = new SectionReportFrontCover(); sectionReportFrontCover.Run(); var sectionReport1 = new SectionReport1(_ReportDataModel); sectionReport1.Run(); var sectionReportBackCover = new SectionReportBackCover(_ReportDataModel); sectionReportBackCover.Run(); sectionReportFrontCover.Document.Pages.AddRange((GrapeCity.ActiveReports.Document.Section.PagesCollection)sectionReport1.Document.Pages.Clone()); sectionReportFrontCover.Document.Pages.AddRange((GrapeCity.ActiveReports.Document.Section.PagesCollection)sectionReportBackCover.Document.Pages.Clone()); viewer1.LoadDocument(sectionReportFrontCover.Document); |
/WinFormsApp1/Form2.cs
セクションレポートを PDFファイル出力するボタン処理に、表紙部、明細部、サマリー部のセクションレポートファイルを結合して出力する処理を追加。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
var sectionReportFrontCover = new SectionReportFrontCover(); sectionReportFrontCover.Run(); var sectionReport1 = new SectionReport1(reportDataModel); sectionReport1.Run(); var sectionReportBackCover = new SectionReportBackCover(reportDataModel); sectionReportBackCover.Run(); sectionReportFrontCover.Document.Pages.AddRange((GrapeCity.ActiveReports.Document.Section.PagesCollection)sectionReport1.Document.Pages.Clone()); sectionReportFrontCover.Document.Pages.AddRange((GrapeCity.ActiveReports.Document.Section.PagesCollection)sectionReportBackCover.Document.Pages.Clone()); using (var export = new PdfExport()) { export.Export(sectionReportFrontCover.Document, @"C:\temp\sample4.pdf"); } MessageBox.Show("PDFファイルを作成しました。", "", MessageBoxButtons.OK, MessageBoxIcon.Information); |
関連記事
GrapeCity ActiveReports for .NET 16.0J のセクションレポート(SectionReport) 開発手順 v1
GrapeCity ActiveReports for .NET 16.0J のセクションレポート(SectionReport) 開発手順 v2
GrapeCity ActiveReports for .NET 16.0J のセクションレポート(SectionReport) 開発手順 v3
GrapeCity ActiveReports for .NET 16.0J のセクションレポート(SectionReport) 開発手順 v4
GrapeCity ActiveReports for .NET 16.0J のセクションレポート(SectionReport) 開発手順 v5
GrapeCity ActiveReport よく使う機能
GrapeCity.ActiveReports.SectionReportの CanGrow/CanShrinkプロパティを使う場合
ActiveReports開発でデザイナが「値を Null にすることはできません。パラメーター名:instance」エラーになる場合
コメント