AdvanceSoftware Tech Blog

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

ExcelCreator12でPDFファイルにグラフを追加する

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

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

環境

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

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

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

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

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

アプリケーションの作成

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

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

ExcelCreatorの使用準備

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

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

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

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

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

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

グラフを追加したPDFファイルの生成

グラフイメージを挿入したPDFファイルを出力するコードを実装していきます。

ツールボックスから"Button"をドラッグ&ドロップでフォームに配置します。

ボタンの配置
ボタンの配置
フォーム内の[button1]をダブルクリックし、Clickイベントハンドラー内に処理を記述します。
Clickイベントハンドラー内に処理を実装
Clickイベントハンドラー内に処理を実装
コード例(C#)

AdvanceSoftware.ExcelCreator.Creator creator1 = new AdvanceSoftware.ExcelCreator.Creator();
creator1.OpenBook(".\\Out.xlsx", ".\\Template.xlsx");
// グラフの数を取得
int chartCount = creator1.GetChartCount();
for (int i = 0; i < chartCount; i++)
{
    // グラフ情報を取得
    ChartData chartData = creator1.GetChartData(i, 330);
    // ChartData からの Image オブジェクト生成処理は独自に実装する必要があります。
    var chartCreator = new MSChartCreator();
    Image chartImage = chartCreator.GetChartImage(chartData);
    // PDF ファイルにのみ出力されるチャートを設定します。
    creator1.Pos(chartData.col, chartData.row).Canvas.AddChart(chartImage, chartData);
}
creator1.CloseBook(true, ".\\Out.pdf", false);

アプリケーションを起動後、ボタンをクリックしてPDFファイルを出力します。

アプリケーションの実行
アプリケーションの実行

グラフイメージの生成について

弊社では.NET FrameworkのChartクラスを使用したグラフイメージ生成処理のサンプル、また、.NETではScottPlotを使用したグラフイメージ生成処理のサンプルをご用意しています。
ご希望の方は以下の問い合わせフォームからお問い合わせください。
お問い合わせはこちら

作成したPDFファイル

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

    出力PDF(Chartクラス使用)
    出力PDF(Chartクラス使用)

  • ScottPlot

    PDF出力(ScottPlot使用)
    PDF出力(ScottPlot使用)

対応するグラフの種類

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

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

"chartData""creator1.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 凡例のテキストのフォントスタイル

さいごに

ExcelCreator12でPDFファイルにグラフを追加する方法について解説してきました。
今回は以上になります。ありがとうございました。
ExcelCreator12製品ページはこちら
ExcelCreator12体験版はこちら

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