ReoGrid
ReoGrid Version 4をリリースしました。多数の新機能に対応し、機能性・パフォーマンスの両面で大幅に強化されています。新機能の詳細については、こちらをご覧ください。
PartialGrid

PartialGrid

概要

PartialGrid(部分グリッド)は、ReoGridワークシートの一部分のデータ、スタイル、および境界線を含む独立したオブジェクトです。これは、ワークシートの特定の範囲をコピー、移動、複製する際に使用されます。

基本概念

PartialGridは以下の情報を保持できます:

  • セルデータ - 値、テキスト、数値などのセル内容
  • セルスタイル - フォント、色、背景色、配置などの書式設定
  • 数式 - セルに含まれる計算式
  • データフォーマット - 数値や日付の表示形式
  • 境界線 - セルの境界線スタイル(水平線・垂直線)

作成方法

1. 空のPartialGridを作成

// 空のPartialGridを作成
var partialGrid = new PartialGrid();

// 指定サイズでPartialGridを作成
var partialGrid = new PartialGrid(5, 3); // 5行3列

// データ配列からPartialGridを作成
var data = new object[,] {
    {"A1", "B1", "C1"},
    {"A2", "B2", "C2"},
    {"A3", "B3", "C3"}
};
var partialGrid = new PartialGrid(data);

2. ワークシートからPartialGridを取得

// 範囲指定でPartialGridを取得
var partialGrid = worksheet.GetPartialGrid("A1:C3");

// RangePositionで指定
var range = new RangePosition(0, 0, 3, 3); // 0行0列から3行3列
var partialGrid = worksheet.GetPartialGrid(range);

// 行列番号で指定
var partialGrid = worksheet.GetPartialGrid(0, 0, 3, 3); // 開始行、開始列、行数、列数

// 特定の行と列の組み合わせで取得
int[] columns = {0, 2, 4}; // A列、C列、E列
int[] rows = {0, 1, 3};    // 1行目、2行目、4行目
var partialGrid = worksheet.GetPartialGrid(columns, rows);

使用方法

1. PartialGridをワークシートに設定

// 基本的な設定
worksheet.SetPartialGrid("E1:G3", partialGrid);

// RangePositionで指定
var targetRange = new RangePosition(4, 0, 3, 3);
worksheet.SetPartialGrid(targetRange, partialGrid);

// 繰り返し設定(パターンを繰り返して大きな範囲に適用)
worksheet.SetPartialGridRepeatly("A1:H10", partialGrid);

2. コピーフラグの使用

PartialGridCopyFlagを使用して、コピーする内容を細かく制御できます:

// すべてをコピー(デフォルト)
var partialGrid = worksheet.GetPartialGrid("A1:C3", PartialGridCopyFlag.All);

// データのみコピー
var partialGrid = worksheet.GetPartialGrid("A1:C3", PartialGridCopyFlag.CellData);

// スタイルのみコピー
var partialGrid = worksheet.GetPartialGrid("A1:C3", PartialGridCopyFlag.CellStyle);

// 境界線のみコピー
var partialGrid = worksheet.GetPartialGrid("A1:C3", PartialGridCopyFlag.Borders);

// 複数の要素を組み合わせ
var partialGrid = worksheet.GetPartialGrid("A1:C3", 
    PartialGridCopyFlag.CellData | PartialGridCopyFlag.CellStyle);

// PartialGridを設定する際にもフラグを指定可能
worksheet.SetPartialGrid("E1:G3", partialGrid, PartialGridCopyFlag.CellData);

主要なコピーフラグ

フラグ説明
Allすべての要素をコピー
CellPropertiesセルのプロパティ(データ、数式、フォーマット、スタイル)
CellDataセルデータのみ
CellFormula数式のみ
CellFormatデータフォーマットのみ
CellStyleセルスタイルのみ
Bordersすべての境界線
HBorder水平境界線のみ
VBorder垂直境界線のみ

実用例

例1: データのコピーと貼り付け

// ワークシートにデータを設定
worksheet["A1"] = "商品名";
worksheet["B1"] = "価格";
worksheet["C1"] = "数量";
worksheet["A2"] = "商品A";
worksheet["B2"] = 1000;
worksheet["C2"] = 5;
worksheet["A3"] = "商品B";
worksheet["B3"] = 2000;
worksheet["C3"] = 3;

// ヘッダー行を含む範囲をPartialGridとして取得
var headerAndData = worksheet.GetPartialGrid("A1:C3");

// 別の場所に貼り付け
worksheet.SetPartialGrid("E1:G3", headerAndData);

例2: テンプレートの繰り返し適用

// 小さなテンプレートを作成
var template = new PartialGrid(new object[,] {
    {"項目", "値"},
    {"", ""}
});

// テンプレートを大きな範囲に繰り返し適用
worksheet.SetPartialGridRepeatly("A1:H10", template);

例3: スタイルのコピー

// 元の範囲にスタイルを設定
worksheet.SetRangeStyle("A1:C2", new WorksheetRangeStyle {
    BackColor = Color.LightBlue,
    TextColor = Color.DarkBlue,
    FontWeight = FontWeights.Bold
});

// スタイルのみをPartialGridとして取得
var styleOnly = worksheet.GetPartialGrid("A1:C2", PartialGridCopyFlag.CellStyle);

// 他の範囲にスタイルを適用
worksheet.SetPartialGrid("E1:G2", styleOnly, PartialGridCopyFlag.CellStyle);

例4: 境界線の操作

// 境界線を設定
worksheet.SetRangeBorders("A1:C3", BorderPositions.All, RangeBorderStyle.BlackSolid);

// 境界線のみをPartialGridとして取得
var bordersOnly = worksheet.GetPartialGrid("A1:C3", PartialGridCopyFlag.Borders);

// 他の範囲に境界線を適用
worksheet.SetPartialGrid("E1:G3", bordersOnly, PartialGridCopyFlag.Borders);

例5: マージされたセルを含む範囲の処理

// セルをマージ
worksheet.MergeRange("A1:C1");
worksheet["A1"] = "タイトル";
worksheet["A2"] = "内容1";
worksheet["A3"] = "内容2";

// マージされたセルを含む範囲をPartialGridとして取得
var mergedGrid = worksheet.GetPartialGrid("A1:C3");

// 別の場所に貼り付け(マージ情報も含まれる)
worksheet.SetPartialGrid("E1:G3", mergedGrid);

アクションとUndo/Redo

PartialGridの設定操作はSetPartialGridActionとして実装されており、Undo/Redo機能に対応しています:

// アクションとして実行(Undo/Redo対応)
var action = new SetPartialGridAction(
    new RangePosition(4, 0, 3, 3), 
    partialGrid, 
    PartialGridCopyFlag.All);

worksheet.DoAction(action);

// 必要に応じてUndoやRedoが可能
worksheet.Undo();
worksheet.Redo();

プロパティとメソッド

主要プロパティ

var partialGrid = new PartialGrid(3, 3);

// サイズ情報
int rows = partialGrid.Rows;       // 行数
int columns = partialGrid.Columns; // 列数

// データアクセス(デバッグビルド時のみ公開)
var cellData = partialGrid.Cells[0, 0]; // セルデータへのアクセス

比較メソッド

// PartialGrid同士の比較
bool areEqual = partialGrid1.Equals(partialGrid2, PartialGridCopyFlag.All);

// 特定の要素のみ比較
bool dataEqual = partialGrid1.Equals(partialGrid2, PartialGridCopyFlag.CellData);
bool styleEqual = partialGrid1.Equals(partialGrid2, PartialGridCopyFlag.CellStyle);

注意事項

  1. パフォーマンス: 大きな範囲のPartialGridを頻繁に操作する場合、パフォーマンスに影響する可能性があります。
  2. メモリ使用量: PartialGridは元のワークシートとは独立してデータを保持するため、大量のデータを扱う際はメモリ使用量に注意してください。
  3. 数式の参照: 数式を含むPartialGridを別の場所に設定する際、セル参照は自動的に調整されます。
  4. マージされたセル: マージされたセルを含む範囲を扱う際は、完全なマージ範囲を含むように注意してください。
  5. 境界線の所有権: 境界線は隣接するセルと共有される場合があります。ExPartialGridCopyFlagを使用して境界線の処理方法を細かく制御できます。

まとめ

PartialGridは、ReoGridでワークシートの一部分を効率的に操作するための強力な機能です。データのコピー、テンプレートの適用、スタイルの複製など、様々な用途に活用できます。適切なコピーフラグを使用することで、必要な情報のみを効率的に処理できます。


ページの内容は役に立ちましたか?