2026年3月4日にリリースされた「SPREAD for Windows Forms(スプレッド)」のバージョン「19.0J」ではExcelのチャートとの互換性を向上した「拡張チャート」が追加されています。

本記事では、SPREAD for Windows Forms(以下SPREAD)の拡張チャートのさまざまな機能を使用する方法を紹介します。
拡張チャートについて
SPREADの旧バージョンから提供してきたチャートは実装が古いため、新しい機能の追加が難しいという制約がありました。今回19.0Jで追加された拡張チャートは、全く新しいチャート機能として提供することで、従来のチャートにはなかった以下のような機能をサポートできるようになっています。
- 定義済みチャートスタイル
- データテーブルの表示
- 折れ線チャートのスムージング
- データラベルの位置とテキスト方向の変更
- 凡例項目の表示切り替えとテキスト方向の変更
これによりMicrosoft Excelのチャートとの互換性がさらに向上しています。
拡張チャート機能は、従来のチャート機能とは互換性がありません。従来のチャート機能で提供されていた「シェイプの埋め込み」、「3Dチャート」はサポートしていません。
事前準備
この記事では以下の開発環境を使用します。開発言語はC#です。
- Visual Studio 2026
- .NET 10
- SPREAD for Windows Forms (19.0.4800.2026)
SPREADは製品版またはトライアル版を使用します。トライアル版は以下より入手可能です。
また、SPREADの製品ヘルプとAPIリファレンスおよびサンプルコード集は以下から参照できます。
Windows FormsアプリケーションのプロジェクトでSPREADコントロールを使用する手順は次のとおりです。
- Windows Formsアプリケーションの作成
- NuGetパッケージの追加
- SPREADコントロールの追加
これら手順の詳細ついてはこちらの記事を参照してください。
データ用シートの設定
拡張チャートで使用するデータは、同じシート内に設定する方法と別のシート上に設定する方法があります。ここでは、別のシートに設定したデータを使って拡張チャートを作成する方法について解説します。
以下のコードは、仙台とデリーの気温データをSPREADの最初のシートに設定します。
// データ用シートの設定
var sheet1 = fpSpread1.Sheets[0].AsWorksheet();
sheet1.Name = "データ";
sheet1.Cells.Font.Name = "メイリオ";
sheet1.Cells.Font.Size = 11;
sheet1.SetValue(0, 0, new object[,]
{
{ "月", "仙台", "デリー" },
{ "1月",1.8, 13.5 },
{ "2月", 4.7, 19.3 },
{ "3月", 6.8, 25.1},
{ "4月", 12.7, 28.1 },
{ "5月",17.4, 32.6 },
{ "6月", 19.6, 33.3 },
{ "7月", 24.6, 31.6 },
{ "8月", 24.6, 29.5 },
});アプリケーションをデバッグ実行すると、次のように「データ」シートが表示されます。

拡張チャートの作成
拡張チャートを利用するには、最初に拡張シェイプエンジンと拡張チャートエンジンを有効にしておく必要があります。
// 拡張シェイプエンジンと拡張チャートエンジンの有効化
fpSpread1.Features.EnhancedShapeEngine = true;
fpSpread1.Features.EnhancedChartEngine = true;次に、AddChartメソッドで拡張チャートを追加した後にSetSourceDataメソッドでデータを設定します。sheet1(「データ」シート)に設定したデータをsheet2(「拡張チャート」シート)に表示します。
// 拡張チャート用シートの設定
var sheet2 = fpSpread1.AsWorkbook().Worksheets.Add("拡張チャート");
sheet2.Activate();
// 拡張チャートの作成
sheet2.Shapes.AddChart(ChartType.LineMarkers, 0, 0, 1100, 684);
sheet2.ChartObjects[0].Chart.SetSourceData(sheet1.ActiveCell["A1:C9"]);アプリケーションをデバッグ実行すると、次のように「拡張チャート」シートが表示されます。

拡張チャートの機能を使用する
デフォルトの状態ではチャートの属性がほとんど設定されていません。ここからは、拡張チャートのさまざまな機能を使って分かりやすく見栄えの良い折れ線チャートに仕上げていきます。
タイトルと軸の設定
最初に、チャートのタイトルと軸を設定します。設定する内容は以下です。
- チャートタイトルの文字列とフォント
- X軸の軸線の表示
- X軸の目盛りラベルのフォント
- Y軸の軸線の表示
- Y軸の目盛りラベルのフォント
- Y軸の表示単位ラベルの文字列とフォント
この記事では、分かりやすさのために一般的な表記の「X軸」、「Y軸」という文言を用いますが、拡張チャートでは、X軸を「カテゴリ軸」、Y軸を「値軸」と呼んでいます。
チャートのタイトルと軸を設定するコードは以下です。最後の「表示単位ラベル」によりY軸の横に気温の単位「℃」を表示していますが、この機能は従来のチャートにはありませんでした。
// チャートタイトル
var title = chart.ChartTitle;
title.Text = "2026年の月平均気温";
title.Format.TextFrame.TextRange.Font.Name = "メイリオ";
title.Format.TextFrame.TextRange.Font.Size = 20;
// X軸
var categoryAxis = chart.Axes[AxisType.Category];
// 軸線
categoryAxis.Format.Line.ForeColor.ARGB = Color.Silver.ToArgb();
categoryAxis.Format.Line.Visible = true;
categoryAxis.Format.Line.Weight = 2;
// 目盛りラベル
categoryAxis.TickLabels.Font.Name = "メイリオ";
categoryAxis.TickLabels.Font.Size = 11;
// Y軸
var valueAxis = chart.Axes[AxisType.Value];
valueAxis.DisplayUnitCustom = 1;
// 軸線
valueAxis.Format.Line.ForeColor.ARGB = Color.Silver.ToArgb();
valueAxis.Format.Line.Visible = true;
valueAxis.Format.Line.Weight = 2;
// 目盛りラベル
valueAxis.TickLabels.Font.Name = "メイリオ";
valueAxis.TickLabels.Font.Size = 11;
// 表示単位ラベル
var unit = valueAxis.DisplayUnitLabel;
unit.Format.TextFrame.TextRange.Font.Name = "メイリオ";
unit.Format.TextFrame.TextRange.Font.Size = 11;
unit.Orientation = 0;
unit.Text = "[℃]";上記を設定した折れ線チャートは、次のようになります。

チャートスタイルの変更
拡張チャートでは定義済みのチャートスタイルが用意されています。このチャートスタイルを使用するには、IChartインターフェイスのChartStyleプロパティにBuiltInChartStyles列挙型を設定します。このプロパティが設定されていない場合は、CharTypeプロパティに設定されたCharType列挙型に対応した既定のスタイルが適用されます。
// チャートスタイル
chart.ChartStyle = BuiltInChartStyles.Line9;BuiltInChartStyles.Line9をChartStyleプロパティに設定すると、拡張チャートのスタイルは次のように変更されます。このとき、拡張チャートの生成時に設定したChartTypeプロパティが上書きされて、ChartType.LineMarkersからChartType.Lineに変更されます。
ChartStyleプロパティを設定すると関連するチャートの属性が上書きされます。属性を上書きしたくない場合には、このプロパティを最初(前述のタイトルと軸の設定の前)に設定する必要があります。
上記を設定した折れ線チャートは、次のようになります。

データテーブルの表示
拡張チャートでは、チャートに設定しているデータをX軸の下にテーブル形式で表示することができます。このデータテーブルを表示するには、IChartインターフェイスのShowDataTableメソッドを実行します。また、データテーブルのフォントや罫線は、DataTableプロパティが参照するIDataTableインターフェイスの機能を使って設定できます。
下記のコードは、データテーブルを表示してフォントを設定します。
// データテーブル
chart.ShowDataTable();
var dataTable = chart.DataTable;
dataTable.Font.Name = "メイリオ";
dataTable.Font.Size = 11;このコードを追加してプロジェクトをデバッグ実行すると次のようになります。

折れ線チャートのスムージング
拡張チャートには、折れ線チャートをベジェ曲線で描画するスムージング機能があります。ベジェ曲線にすることで、データ点とデータ点の間がなめらかな曲線で描画されます。この処理は、データ系列(ISeriesインターフェイス)のSmoothプロパティをTrueにすることで実現できます。
以下のコードは、第2系列の折れ線にスムージングを適用します。
// 第2系列の折れ線チャートのスムージング
chart.Series[1].Smooth = true;次のように、上側の折れ線(第2系列)はスムージングされていますが、下側の折れ線(第1系列)はこの処理が行われていないので、データ点が直線で結ばれています。

データラベルの設定
データラベルの表示切り替え
データラベルはIChartインターフェイスのApplyDataLabelsメソッドを使って表示します。ラベルに表示する内容は、このメソッドの引数DataLabelVisibilities列挙型で指定できます。
以下のコードでは、引数にDataLabelVisibilities.Valueを渡してデータ点の値を表示します。データラベルを非表示にする場合は、引数をDataLabelVisibilities.Noneにします。
chart.ApplyDataLabels(DataLabelVisibilities.Value);データラベルを表示すると、拡張チャートは次のようになります。

データラベルのカスタマイズ
従来のチャートでもデータラベルを表示する機能はありましたが、データラベルのテキスト方向や配置を適切に変更する機能はありませんでした。拡張チャートでは、Excelチャートのようにデータラベルの方向や配置を変更して独自のテキストを設定することが可能です。
データラベル(IDataLabelインターフェイス)は、データ系列単位で変更することもデータ点ごとに変更することもできます。データラベルの配置、テキスト方向、書式、およびテキストは、以下のプロパティを使って設定します。
| 機能 | プロパティ | 設定値 |
|---|---|---|
| ラベルの配置 | Position | DataLabelPosition列挙型 |
| テキスト方向 | TextOrientation | TextOrientation列挙型 |
| ラベルの書式 | Format | IChartFormatの各メンバー |
| 独自の文字列設定 | AutoText, Text | Boolean型, String型 |
既定の文字列に代えて任意の文字列を設定するには、該当するデータ点のデータラベルのAutoTextプロパティをFalseにし、Textプロパティに目的の文字列を設定します。
以下では、データ系列ごとにデータラベルの配置を変更しています。さらに、下側の折れ線(第1系列)の最初のデータ点では、データラベルの配置をBottomからTopに変更し、上側の折れ線(第2系列)の2番目のデータ点では、データラベルに任意の文字列を設定してテキストの方向と書式も変更しています。
// データ系列
chart.ApplyDataLabels(DataLabelVisibilities.Value);
for (var i = 0; i < chart.Series.Count; i++)
{
// ChartStyle設定により変更されたチャートタイプの再設定
chart.Series[i].ChartType = ChartType.LineMarkers;
chart.Series[i].MarkerSize = 12;
// データラベル
var labels = chart.Series[i].DataLabels;
labels.Format.TextFrame.TextRange.Font.Name = "メイリオ";
labels.Format.TextFrame.TextRange.Font.Size = 11;
if (i == 0)
{
// 系列のデータラベル位置の指定
labels.Position = DataLabelPosition.Bottom;
// データ点のデータラベル位置の指定
labels[0].Position = DataLabelPosition.Top;
}
else
{
// 系列のデータラベル位置の指定
labels.Position = DataLabelPosition.Top;
// データ点のデータラベルの向きとテキストの変更
labels[1].TextOrientation = TextOrientation.Downward;
labels[1].AutoText = false;
labels[1].Text = $"テキストの向きと値の変更 ({chart.Series[i].Values[0]})";
// データ点のデータラベルの書式変更
labels[1].Format.Fill.BackColor.ARGB = Color.Lavender.ToArgb();
labels[1].Format.TextFrame.TextRange.Font.Bold = true;
labels[1].Format.TextFrame.TextRange.Font.Fill.ForeColor.ARGB = Color.Blue.ToArgb();
}
}コードの先頭部分では、チャートタイプを再設定しています。これにより、DataStyleプロパティの設定によってChartType.Lineに初期化されたチャートタイプをChartType.LineMarkersに戻しています。それと同時に、マーカーサイズも大きく変更しています。
以上により、折れ線チャートは次のようになります。

凡例の設定
凡例の表示切り替え
凡例は、IChartインターフェイスのShowLegendメソッドを実行することで表示されます。
chart.ShowLegend();表示した凡例を非表示にするには、IChartインターフェイスのLegendプロパティを経由してILegendインターフェイスのDeleteメソッドを呼び出します。凡例の特定の項目だけを非表示にする場合は、ILegendEntryインターフェイスのDeleteメソッドを使用します。
chart.ShowLegend();
var legend = chart.Legend;
//legend.Delete(); // 凡例全体を削除
legend.LegendEntries[0].Delete(); // 凡例の第1項目を削除既定の状態では、凡例はチャートの下部に表示されます。

凡例のカスタマイズ
ILegendインターフェイスの機能を使うことで、凡例をカスタマイズすることができます。
| 機能 | プロパティ | 設定値 |
|---|---|---|
| 凡例の配置 | Position | LegendPosition列挙型 |
| テキスト方向 | TextOrientation | TextOrientation列挙型 |
| 凡例の書式 | Format | IChartFormatの各メンバー |
以下のコードでは、凡例をチャートの右側に配置してフォントとテキスト方向を変更し、凡例から第1項目を削除しています。
// 凡例
chart.ShowLegend();
var legend = chart.Legend;
legend.Format.TextFrame.TextRange.Font.Name = "@メイリオ";
legend.Format.TextFrame.TextRange.Font.Size = 12;
legend.LegendEntries[0].Delete();
legend.Position = LegendPosition.Right;
legend.TextOrientation = TextOrientation.Downward;
今回作成したサンプルは以下よりダウンロード可能です。
さいごに
今回の記事では、SPREAD for Windows Forms の拡張チャートの使用方法についてご紹介しました。
製品サイトでは、SPREAD for Windows Formsの機能を手軽に体験できるデモアプリケーションやトライアル版も公開しておりますので、こちらもご確認いただければと思います。
また、ご導入前の製品に関するご相談やご導入後の各種サービスに関するご質問など、お気軽にお問合せください。
