syncfusion-wpf-excel-like-grid について
WPF 開発者向けに Syncfusion GridControl の実装方法を解説するガイドです。表の設定や操作に加え、仮想化、数式、Excel のインポートとエクスポートを扱います。
主な機能
- 01セル型とスタイルの設定
- 02行、列、選択モードの管理
- 03数式計算と関数の追加
- 04クリップボードと元に戻す・やり直し
- 05Excel ファイルのインポートとエクスポート
- 06仮想データの読み込みと性能調整
活用シーン
- 01WPF アプリへのグリッド追加
- 02大規模な表データのオンデマンド読み込み
- 03数式セルと編集機能の実装
- 04Excel ワークブックの入出力
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ syncfusion/ wpf-ui-components-skills --skill syncfusion-wpf-excel-like-gridインストール後、Claude Code で/syncfusion-wpf-excel-like-gridを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/advanced-features.mdappearance-and-styling.mdcell-types.mdediting-clipboard-undo.mdexcel-import-export.mdformula-cells.mdgetting-started.mdinteractive-features.mdmanaging-rows-and-columns.mdperformance-virtualization.mdselection-and-events.md詳細
Syncfusion WPF GridControl の実装
Syncfusion WPF GridControl は、高性能なセル指向のグリッドであり、柔軟な表形式の表示エンジンとして機能します。データ構造を前提とせず、QueryCellInfo による仮想(オンデマンド)データ読み込みに対応し、数式、インポート/エクスポート、クリップボード操作、結合セル、20 種類以上の組み込みセルタイプなど、Excel のような機能を備えています。
このスキルを使用する場面
- WPF アプリケーションに GridControl を追加する(XAML またはコードビハインド)
- セルへの直接代入、または仮想の
QueryCellInfoイベントを使ってセルにデータを入力する - セルタイプ(CheckBox、ComboBox、DateTimeEdit、FormulaCell など)を設定する
- セルの外観(背景、フォント、罫線、データ形式)をカスタマイズする
- 行と列を管理する(挿入、削除、移動、固定、非表示)
- クリップボード、元に戻す/やり直し、編集動作を扱う
- インタラクティブ機能:列のドラッグ&ドロップ、セルのドラッグ&ドロップ、サイズ変更
- 数式セルのサポートと組み込みの数式ライブラリ
- グリッドデータを Excel にエクスポートする。Excel ブックをグリッドにインポートする
- 選択モード、イベント、仮想モードのパターン
- パフォーマンスの調整、仮想化、結合範囲、ズーム
- 高度な機能:コメント、ツールチップ、印刷、シリアル化、自動サイズ調整
ドキュメントとナビゲーションガイド
はじめに
📄 参照: references/getting-started.md
- 必要なアセンブリ参照
- デザイナーまたはプログラムから GridControl を追加する
RowCountとColumnCountを設定する- ループまたは仮想イベント
QueryCellInfoでデータを入力する - 最小限の動作例
セルタイプ
📄 参照: references/cell-types.md
- 20 種類以上の組み込みセルタイプ:Header、Static、CheckBox、Button、Image、ComboBox、 DropDownList、DateTimeEdit、IntegerEdit、DoubleEdit、CurrencyEdit、PercentEdit、 MaskEdit、UpDownEdit、RichText、DataBoundTemplate、NestedGrid(ScrollGrid)
- 個々のセルまたは範囲に
Style.CellTypeを設定する ChoiceListとItemsSourceを使った ComboBox- カスタムセルタイプ(CellModel + CellRenderer パターン)
外観とスタイル設定
📄 参照: references/appearance-and-styling.md
GridStyleInfoクラスとスタイル継承階層- 揮発性セルスタイルと描画セルスタイル
- 基本スタイル(
BaseStylesMap)、TableStyle、RowStyles、ColumnStyles - 背景(単色/グラデーション)、前景、フォント、テキストの向き、罫線
- 数値と DateTime の書式文字列、
FormatProviderインターフェイス
行と列の管理
📄 参照: references/managing-rows-and-columns.md
- 行/列の数と既定のサイズを設定する
- 行/列を非表示および再表示する(
SetHidden) - 行/列を固定する。フッターとヘッダーの行/列
- 実行時に行/列を挿入、移動、削除する
- サイズ変更の動作とサイズ変更コントローラーの無効化
編集、クリップボード、元に戻す/やり直し
📄 参照: references/editing-clipboard-undo.md
CopyPasteOptionフラグ(CopyText、CopyCellData、PasteCell、CutCell、XmlCopyPaste)- カスタム区切り文字やバッファーベースの操作に使う
TextDataExchange - クリップボードイベントと
IGridCopyPasteによるカスタム実装 CommandStack:元に戻す/やり直し、BeginTrans、CommitTrans、Rollback- 拡張された元に戻す/やり直し機能のために派生コマンドを作成する
インタラクティブ機能
📄 参照: references/interactive-features.md
- 列のドラッグ&ドロップ(
AllowDragColumns) - Excel のようなセルのドラッグ&ドロップ(
AllowDragDrop、DataObjectConsumerOptions) - 実行時の行/列のサイズ変更とサイズ変更コントローラーの無効化
- 行と列を視覚的に非表示および再表示する(
HiddenBorderBrush、SetHidden)
数式セル
📄 参照: references/formula-cells.md
- 個々のセルまたはグリッド全体で
FormulaCell型を有効にする - 組み込みの数式ライブラリ(150 以上の関数:Sum、Avg、Sqrt、Pow、Cos、Sin など)
- 算術演算子と計算の優先順位
- セル間参照(A1 形式)、名前付き範囲
- ライブラリにカスタム数式関数を追加する
Excel のインポートとエクスポート
📄 参照: references/excel-import-export.md
- 必要なアセンブリ(
Syncfusion.XlsIO、Syncfusion.GridConverter.Wpf) - グリッド全体または選択したコンテンツを .xls / .xlsx にエクスポートする
- Excel ブックをインポートする:スタイル、数式、条件付き書式、ウィンドウ枠の固定、 ハイパーリンク、コメント
- 大容量ブックの仮想化インポート
選択とイベント
📄 参照: references/selection-and-events.md
- 選択モード:セル、行、列(
AllowSelectionフラグ) - 仮想データ読み込みのための
QueryCellInfoイベントパターン - ビュー固有のオーバーライドに使う
PrepareRenderCell - 一般的なグリッドイベント:
CommitCellInfo、CurrentCellActivated、クリップボードイベント、RowsInserted、ColumnsMoved、ResizingRowsなど GridRangeInfoとSelectedRangesの操作
パフォーマンスと仮想化
📄 参照: references/performance-virtualization.md
- 仮想モードの基本と
QueryCellInfoのベストプラクティス - カバー範囲(
CoveredCells)とフローティングセル - グリッドのズーム
- 高頻度更新のパターン
高度な機能
📄 参照: references/advanced-features.md
- セルコメント、入力メッセージのヒント、ツールチップ
- セルレイアウトのカスタマイズ(カバーセル、結合範囲、自動調整)
- グリッドコンテンツの印刷
- シリアル化:グリッドの状態を保存および読み込む
- コンテンツに合わせて行と列を自動調整する
クイックスタートの例
1. Add assemblies:
Syncfusion.Grid.Wpf
Syncfusion.GridCommon.Wpf,
Syncfusion.Linq.Base,
Syncfusion.Shared.Wpf
// 2. XAML — place GridControl inside a ScrollViewer
<ScrollViewer>
<syncfusion:GridControl x:Name="gridControl" />
</ScrollViewer>
// 3. Code-behind: set size and populate
gridControl.Model.RowCount = 100;
gridControl.Model.ColumnCount = 10;
// Option A — direct assignment
for (int i = 0; i < 100; i++)
for (int j = 0; j < 10; j++)
gridControl.Model[i, j].CellValue = $"{i}/{j}";
// Option B — virtual mode (preferred for large data)
gridControl.QueryCellInfo += (s, e) =>
{
if (e.Cell.RowIndex > 0 && e.Cell.ColumnIndex > 0)
e.Style.CellValue = $"{e.Cell.RowIndex}/{e.Cell.ColumnIndex}";
};
よく使われるパターン
範囲にセル型を適用する
// Set an entire column to CheckBox
for (int i = 1; i <= gridControl.Model.RowCount; i++)
gridControl.Model[i, 3].CellType = "CheckBox";
PrepareRenderCell で行の色を交互に設定する
gridControl.PrepareRenderCell += (s, e) =>
{
if (e.Cell.RowIndex > 0 && e.Cell.RowIndex % 2 == 0)
e.Style.Background = Brushes.LightSkyBlue;
};
ヘッダーを固定して数式セルを有効にする
gridControl.Model.FrozenRows = 1;
gridControl.Model.HeaderRows = 1;
gridControl.BaseStylesMap["Standard"].StyleInfo.CellType = "FormulaCell";
Excel にエクスポートする
gridControl.Model.ExportToExcel(@"Output.xlsx", ExcelVersion.Excel2007);
主なスタイルプロパティ
| プロパティ | 用途 |
|---|---|
Model[r, c].CellType | 組み込みまたはカスタムのセル型文字列を設定します |
Model[r, c].CellValue | セルに格納されるデータ値です |
Model[r, c].Background | セルの背景ブラシです |
Model[r, c].Foreground | セルのテキスト色です |
Model[r, c].Font.FontSize | セルのフォントサイズです |
Model[r, c].Borders | 個別の境界線ペン(Top/Bottom/Left/Right)です |
Model[r, c].Format | 書式文字列(例:"C"、"0.00"、"d")です |
Model.RowHeights[r] | デバイス非依存単位での行の高さです |
Model.ColumnWidths[c] | 列の幅です |
Model.FrozenRows | 上部で固定する行数です |
Model.FrozenColumns | 左側で固定する列数です |