AdvanceSoftware Tech Blog

アドバンスソフトウェア株式会社の技術ブログ

AS-Report 12でグラフを追加した帳票を作成する

AS-Report 12では、新機能として、テンプレートExcelファイルに配置されたグラフの情報を取得する機能(※xlsx形式のみ対応)が追加されました。これにより、取得したグラフの情報から、サードパーティー製のライブラリ等を使用してグラフイメージを生成し、プレビューや印刷、PDFファイルにグラフイメージを追加することが可能です。 この記事では、プレビュー、印刷、PDFファイルにグラフを追加する方法について解説していきます。

AS-Report 12ではグラフ情報の取得及び、プレビュー、印刷、PDFファイルへのグラフイメージの挿入機能についてのみ提供、サポートします。このため、サードパーティー製のライブラリ等を使用したグラフイメージの生成はユーザー独自に実装して頂く必要があります。

環境

  • Windows 11
  • Visual Studio 2022
  • AS-Report 12
  • .NET Framework 4.6.2
  • グラフイメージ生成のライブラリ
    • Chartクラス
      (※弊社で動作確認済みの外部ライブラリ)

使用するテンプレートExcelファイル

今回は以下のようなExcelファイルを用意しました。

テンプレートExcelファイル
テンプレートExcelファイル

Windows フォームアプリケーションの作成

Windows フォームアプリケーションを作成していきます。

アプリケーションの作成

Visual Studioを起動して、[新しいプロジェクトの作成]をクリックします。

新しいプロジェクトの作成
新しいプロジェクトの作成
"Windows フォームアプリケーション(.NET Framework)"を選択し、[次へ]をクリックします。
Windows フォーム アプリケーション
Windows フォーム アプリケーション
プロジェクトの構成を設定し、[作成]をクリックします。
プロジェクト名:WindowsFormsApp1
フレームワーク.NET Framework 4.6.2
プロジェクトの構成
プロジェクトの構成
Visual Studio 画面
Visual Studio 画面

AS-Reportの使用準備

NuGetパッケージのインストール

ソリューションエクスプローラーからプロジェクトを右クリックし、
[NuGet パッケージの管理]を選択します。

NuGetパッケージの管理
NuGetパッケージの管理
パッケージソースにnuget.orgを指定し、[参照]タブにパッケージ一覧が表示されるため、検索ボックスで「AdvanceSoftware.ASReport.CellReport」、「AdvanceSoftware.ASReport.Viewer」を検索します。
パッケージファイルをそれぞれ選択し、[インストール]ボタンをクリックしてパッケージファイルをインストールします。
AdvanceSoftware.ASReport.CellReport
AdvanceSoftware.ASReport.CellReport
AdvanceSoftware.ASReport.CellReport パッケージファイル
AdvanceSoftware.ASReport.CellReport パッケージファイル
AdvanceSoftware.ASReport.Viewer
AdvanceSoftware.ASReport.Viewer
AdvanceSoftware.ASReport.Viewer パッケージファイル
AdvanceSoftware.ASReport.Viewer パッケージファイル

CellReportとViewerControlの配置

Form1.csのデザイン画面を開き、ツールボックスからCellReportとViewerControlをドラッグアンドドロップでフォームに配置します。

フォームへの配置
フォームへの配置

ツールボックスにCellReportとViewerControlが表示されない場合、以下をお試しください。

テンプレートExcelファイルの配置

テンプレートExcelファイルをコピーし、プロジェクトを右クリック - [貼り付け]からプロジェクトルートにファイルを配置します。
また、プロパティから[出力ディレクトリにコピー]の項目を"常にコピーする"に設定します。

テンプレートExcelファイルの配置
テンプレートExcelファイルの配置

グラフを追加した帳票の作成

グラフイメージを挿入した帳票を作成するコードを実装していきます。

FormのLoadイベントを実装します。

FormのLoadイベントの実装
FormのLoadイベントの実装
続けて、Loadイベントハンドラー内に帳票作成の処理を記述していきます。
Loadイベントハンドラー内に処理を実装
Loadイベントハンドラー内に処理を実装
コード例(C#)

cellReport1 = new AdvanceSoftware.ASReport.CellReport();
cellReport1.FileName = Path.Combine(Application.StartupPath, "Template.xlsx");
cellReport1.Report.Start();
cellReport1.Report.File();
cellReport1.Page.Start("グラフ", "1");
// グラフの数を取得
int chartCount = cellReport1.GetChartCount();
for (int i = 0; i < chartCount; i++)
{
  // グラフ情報を取得
  ChartData chartData = cellReport1.GetChartData(i, 330);
  // ChartData からの Image オブジェクト生成処理は独自に実装する必要があります。
  var chartCreator = new MSChartCreator();
  Image chartImage = chartCreator.GetChartImage(chartData);
  // グラフイメージの挿入
  cellReport1.Pos(chartData.col, chartData.row).Canvas.AddChart(chartImage, chartData);
}
cellReport1.Page.End();
cellReport1.Report.End();
// プレビュー
viewerControl1.Document = cellReport1.Document;

※Chartクラスを使用するにはプロジェクトでSystem.Windows.Forms.DataVisualizationのアセンブリを参照する必要があります。

アプリケーションを実行後、グラフイメージが追加された帳票のプレビューが表示されます。

プレビュー
プレビュー

印刷、PDFファイルの作成

  • 印刷(Microsoft XPS Document Writer使用)
    プレビュー画面から左上の印刷アイコンをクリックすることで印刷を行えます。

    印刷
    印刷

  • PDFファイル
    プレビュー画面から左上のファイルアイコンをクリックすることでPDF出力を行えます。

    PDFファイル

対応するグラフの種類

  • 折れ線グラフ
  • 集合縦棒グラフ
  • 集合横棒グラフ
  • 円グラフ
  • ドーナツグラフ
  • 面グラフ

グラフ情報に関する主なプロパティと対応するグラフ要素        

"chartData""cellReport1.GetChartData"メソッドの返り値としています。

プロパティ グラフ要素
chartData.chartProperties.fill.color        グラフエリアの背景色                       
chartData.chartProperties.line.color グラフエリアの境界線の色
chartData.chartProperties.line.width グラフエリアの境界線の幅(px単位)
chartData.chartProperties.line.dashType グラフエリアの境界線のスタイル
chartData.width グラフエリアの幅
chartData.height グラフエリアの高さ
chartData.chartTitle.text グラフタイトルのテキスト
chartData.chartTitle.chartProperties.fill.color グラフタイトルの背景色
chartData.chartTitle.chartProperties.line.color グラフタイトルの境界線の色
chartData.chartTitle.chartProperties.line.width グラフタイトルの境界線の幅(px単位)
chartData.chartTitle.chartProperties.line.dashType グラフタイトルの境界線のスタイル
chartData.chartTitle.textProperties.fill.color グラフタイトルのテキストの色
chartData.chartTitle.textProperties.font.size グラフタイトルのテキストのフォントサイズ(pt単位)
chartData.chartTitle.textProperties.font.style グラフタイトルのテキストのフォントスタイル
chartData.plotArea.chartProperties.fill.color プロットエリアの背景色
chartData.plotArea.chartProperties.line.color プロットエリアの境界線の色
chartData.plotArea.chartProperties.line.width プロットエリアの境界線の幅(px単位)
chartData.plotArea.chartProperties.line.dashType プロットエリアの境界線のスタイル
chartData.plotArea.series[].text 系列の名前
chartData.plotArea.series[].ChartType 系列のグラフの種類
chartData.plotArea.series[].axisType 系列で使用する軸
chartData.plotArea.series[].dataPointValues[].xValue 縦(値)軸のデータ
chartData.plotArea.series[].dataPointValues[].yValue 横(項目)軸のデータ
chartData.plotArea.series[].dataPointValues[].categoryValue 横(項目)軸の項目名
chartData.legend.position 凡例の位置
chartData.legend.chartProperties.fill.color 凡例の背景色
chartData.legend.chartProperties.line.color 凡例の境界線の色
chartData.legend.chartProperties.line.width 凡例の境界線の幅(px単位)
chartData.legend.chartProperties.line.dashType 凡例の境界線のスタイル
chartData.legend.textProperties.fill.color 凡例のテキストの色
chartData.legend.textProperties.font.size 凡例のテキストのフォントサイズ(pt単位)
chartData.legend.textProperties.font.style 凡例のテキストのフォントスタイル

さいごに

AS-Report 12でグラフを追加した帳票を作成する方法について解説してきました。
今回は以上になります。ありがとうございました。
AS-Report 12製品ページはこちら
AS-Report 12体験版はこちら(無償)

© 2022 Advance Software Co., Ltd. All Rights Reserved.