ビジネス文書の自動化ニーズが高まる中、データ可視化を文書生成プロセスに組み込みたいという企業は増え続けています。従来は Excel や PowerPoint でグラフを作成し、その画像を手動で Word 文書へ挿入する方法が一般的でした。しかし、大量のレポートを出力する場合や、頻繁にデータが更新される場合、またプログラムによってグラフ構成を動的に変更する必要がある場合、こうした手作業は非効率でミスの原因にもなります。
コードから直接 Word 文書へグラフを生成できれば、文書作成プロセスはより自動化され、再利用性や拡張性も向上します。データ分析レポート、四半期報告書、技術文書など、あらゆる用途で数行の C# コードからプロフェッショナルなグラフを作成し、統一された形式で Word に埋め込むことが可能です。
本記事では、Word 文書内にグラフを作成する方法を紹介し、タイトル・凡例・軸・データラベル・データテーブルなど、グラフをより見やすく整えるカスタマイズ方法もあわせて解説します。
本記事の手法では Free Spire.Doc for .NET を使用します。NuGet から次のコマンドでインストールできます:
Install-Package FreeSpire.Doc
C# で Word 文書を作成し、グラフを挿入して保存する
Free Spire.Doc for .NET を使用すると、Word 文書の生成、グラフの挿入、データ設定、グラフ書式設定、文書保存まで一連の処理をすべてコードで完結できます。以下のサンプルでは、Word 文書を作成し、円グラフとバブルチャートを挿入する方法を紹介します。
円グラフの挿入
次のコードは、新しい Word 文書を作成し、その中に円グラフを挿入する例です。データとして「ソフトウェア利用比率」を使用します。
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using Spire.Doc.Fields.Shapes.Charts;
Document doc = new Document();
Section section = doc.AddSection();
Paragraph paragraph = section.AddParagraph();
// 円グラフを挿入
ShapeObject shape = paragraph.AppendChart(ChartType.Pie, 480f, 300f);
Chart pieChart = shape.Chart;
pieChart.Series.Clear();
// カテゴリーと値
string[] categories = { "Word", "Excel", "PDF" };
double[] usageData = { 45.2, 38.6, 16.2 };
// データ系列を追加
ChartSeries series = pieChart.Series.Add("Usage Share", categories, usageData);
// タイトル
ChartTitle title = pieChart.Title;
title.Show = true;
title.Text = "オフィスソフト利用比率(四半期データ)";
ここまでで、Word 文書内に円グラフを生成し、カテゴリと数値データを設定できました。手動操作に比べ、長期的な運用やバックエンドのデータをそのまま反映する用途に特に適しています。
バブルチャート(バブルグラフ)の挿入
バブルチャートは 3 つの値(X 値・Y 値・バブルサイズ)を可視化できるため、市場分析、製品比較、投資評価などでよく使用されます。
Paragraph bubblePara = section.AddParagraph();
// バブルチャートを挿入
ShapeObject bubbleShape = bubblePara.AppendChart(ChartType.Bubble, 500f, 320f);
Chart bubbleChart = bubbleShape.Chart;
bubbleChart.Series.Clear();
// サンプルデータ(3 次元)
double[] xValues = { 2.3, 3.1, 4.0, 5.2, 3.8 };
double[] yValues = { 1.5, 3.7, 2.8, 4.6, 2.0 };
double[] bubbleSizes = { 10, 25, 15, 30, 18 };
ChartSeries bubbleSeries = bubbleChart.Series.Add("市場ポジション", xValues, yValues, bubbleSizes);
// タイトル
ChartTitle bubbleTitle = bubbleChart.Title;
bubbleTitle.Show = true;
bubbleTitle.Text = "製品市場ポジション分析";
このコードでは、2 次元の位置関係に加えてバブルサイズを 3 つ目の軸として視覚化し、多面的なデータ理解を助けます。
文書の保存
doc.SaveToFile("ChartInWordDocument.docx", FileFormat.Docx);
保存された文書には円グラフとバブルチャートが含まれ、スタイル・ラベル・タイトルもすべて保持されます。
以下は保存された文書のプレビュー画像です。
グラフタイトル、凡例、軸、データラベルなどの高度なカスタマイズ
見やすくプロフェッショナルなグラフを作成するには、タイトル、凡例、軸ラベル、データラベル、データテーブルなどの要素が欠かせません。以下では、用途に応じて呼び出せる補助メソッドを紹介します。
グラフタイトルの設定
void AppendChartTitle(Chart chart, string titleText)
{
ChartTitle title = chart.Title;
title.Show = true;
title.Overlay = false;
title.Text = titleText;
title.CharacterFormat.FontSize = 13;
title.CharacterFormat.Bold = true;
title.CharacterFormat.TextColor = System.Drawing.Color.DarkBlue;
}
タイトルはグラフの内容を明確にし、文書全体の流れも読みやすくします。
凡例の書式設定
void AppendChartLegend(Chart chart)
{
chart.Legend.Show = true;
chart.Legend.Position = LegendPosition.Right;
chart.Legend.CharacterFormat.FontSize = 9;
chart.Legend.CharacterFormat.Italic = true;
chart.Legend.CharacterFormat.TextColor = System.Drawing.Color.DarkGreen;
}
特に円グラフでは凡例が重要で、各要素の意味を直感的に理解できます。
軸のカスタマイズ(縦棒・折れ線グラフなどに適用)
void AppendChartAxis(Chart chart)
{
if (chart.Axes.Count > 0)
{
chart.Axes[0].Title.Text = "製品カテゴリ";
chart.Axes[0].Title.Show = true;
}
if (chart.Axes.Count > 1)
{
chart.Axes[1].Title.Text = "販売数量";
chart.Axes[1].Title.Show = true;
chart.Axes[1].HasMajorGridlines = true;
}
}
円グラフには軸がありませんが、バブルチャート・折れ線・縦棒グラフなどでは軸が重要になります。
データラベル(値・カテゴリ名・% など)
void AppendChartDataLabel(Chart chart, ChartType chartType)
{
if (chart.Series.Count == 0) return;
ChartSeries series = chart.Series[0];
series.HasDataLabels = true;
var labels = series.DataLabels;
labels.ShowValue = true;
labels.ShowCategoryName = true;
labels.CharacterFormat.FontSize = 10;
labels.CharacterFormat.TextColor = System.Drawing.Color.Black;
if (chartType == ChartType.Pie)
labels.ShowPercentage = true;
if (chartType == ChartType.Bubble)
labels.ShowBubbleSize = true;
labels.Separator = " / ";
}
円グラフでは「割合」、バブルチャートでは「バブルサイズ」が特に重要です。
データテーブルの追加(グラフ下部に数値一覧を表示)
void AppendChartDataTable(Chart chart)
{
chart.DataTable.Show = true;
chart.DataTable.ShowHorizontalBorder = true;
chart.DataTable.ShowVerticalBorder = true;
}
財務報告や監査用途など、数値を併記する必要がある場合に便利です。
主要クラス・メソッドの解説
Spire.Doc を使って Word グラフを自動生成する際、主要オブジェクトの役割を理解しておくと、複数種類のグラフ追加やスタイル調整、文書の大量生成などを柔軟に行えます。
Document / Section:Word 文書構造の基盤
Document は Word ファイル全体を表すクラスで、作成・読み込み・保存を担当します。Section はページレイアウト、余白、段落、テーブル、グラフなどのコンテンツを保持します。
主なメソッド:
-
Document.AddSection()— セクションを追加 -
Document.SaveToFile()—.docxや.pdf形式で保存
Paragraph / ShapeObject:グラフの挿入位置
グラフは ShapeObject として段落(Paragraph)内に挿入されます。段落は位置とレイアウトを管理し、グラフ Shape は表示領域を持ちます。
主なメソッド:
-
Paragraph.AppendChart(ChartType type, float width, float height)— グラフ生成
ChartType:グラフ種類を表す列挙体
グラフの構造や表現方法を決める最も重要なパラメータです。Word と同等の種類が用意されており、種類によって設定できる項目(軸・パーセンテージ表示など)が変わります。
代表的な種類:
-
ChartType.Pie/Pie3D— 構成比の可視化に最適 -
ChartType.ColumnClustered— カテゴリ比較向けの縦棒(簇状) -
ChartType.Line— 推移・トレンド分析 -
ChartType.Bubble— 3 次元データの可視化(X/Y/サイズ) -
ChartType.Bar— ラベルが長いデータの比較に適した横棒
例:
ShapeObject shape = paragraph.AppendChart(ChartType.Pie, 500, 300);
Spire.Doc for .NET の ChartType API リファレンスを参照して、その他のグラフタイプを確認してください。
Chart / ChartSeries:グラフ構造の中心部分
Chart は軸、データ系列、タイトル、凡例、データテーブルなど、グラフ全体を管理します。
主な要素:
-
chart.Series.Add()— データ系列の追加 -
chart.Title— グラフタイトル -
chart.Legend— 凡例 -
chart.DataTable— グラフ下部のデータ表 -
chart.Axes— X/Y 軸(折れ線・棒グラフ等)
まとめ
本記事では、C# と Spire.Doc for .NET を利用して Word 文書内にグラフを自動生成する方法を紹介しました。円グラフやバブルチャートなどの作成だけでなく、タイトル・凡例・軸・データラベル・データテーブルまで、細かなカスタマイズも簡単に実装できます。
従来のように手動でグラフを挿入する必要はなく、コード生成により作業の重複を排除し、大規模かつ拡張性の高い文書生成ワークフローを構築できます。ビジネスレポート、統計資料、マーケット分析など、あらゆる場面で高い柔軟性と信頼性を発揮するでしょう。
これらのグラフカスタマイズ方法を活用し、より洗練された、効率的でインテリジェントな文書生成ソリューションを構築してみてください。
