パーシャルグリッド

PartialGrid は、データ、スタイル、罫線を含むセルの独立した矩形ブロックを表します。ワークシートから抽出したり、ワークシートに適用したりできます。クリップボード操作、SetPartialGridAction、パターン繰り返し塗りつぶしの基盤となるメカニズムです。

名前空間

using unvell.ReoGrid;

PartialGridの作成

コンストラクター

コンストラクター説明
PartialGrid()空のパーシャルグリッドを作成
PartialGrid(int rows, int cols)指定されたキャパシティで空のパーシャルグリッドを作成
PartialGrid(object[,] data)二次元配列のデータで塗りつぶされたパーシャルグリッドを作成
// From a 2D array
var grid = new PartialGrid(new object[,] {
    { "Name", "Price", "Qty" },
    { "Apple", 1.20, 50 },
    { "Banana", 0.80, 30 },
});

プロパティ

プロパティ説明
Rowsintパーシャルグリッドの行数
Columnsintパーシャルグリッドの列数

ワークシートからの抽出

GetPartialGrid を使用して、ワークシートからセルのブロックをコピーします。返された PartialGrid にはデータ、スタイル、罫線が含まれます。

GetPartialGridのオーバーロード

シグネチャー説明
GetPartialGrid(string addressOrName)アドレスまたは名前付き範囲で取得
GetPartialGrid(int row, int col, int rows, int cols)位置とサイズで取得
GetPartialGrid(RangePosition range)範囲位置で取得
GetPartialGrid(int[] columns, int[] rows)非連続の列と行で取得
// Copy a block from A1:C3
PartialGrid block = sheet.GetPartialGrid("A1:C3");

// Copy by position
PartialGrid block = sheet.GetPartialGrid(0, 0, 3, 3);

// Copy specific columns and rows (non-contiguous)
PartialGrid block = sheet.GetPartialGrid(
    new int[] { 0, 2, 4 },   // columns A, C, E
    new int[] { 0, 1, 2 });   // rows 1, 2, 3

ワークシートへの適用

SetPartialGrid を使用して、パーシャルグリッドをワークシートの目標位置に貼り付けます。対象範囲がパーシャルグリッドのデータ、スタイル、罫線で上書きされます。

SetPartialGridのオーバーロード

シグネチャー戻り値説明
SetPartialGrid(string addressOrName, PartialGrid data)RangePositionアドレスまたは名前付き範囲に貼り付け
SetPartialGrid(RangePosition toRange, PartialGrid data)RangePosition範囲位置に貼り付け
// Copy from one location to another
var block = sheet.GetPartialGrid("A1:C3");
sheet.SetPartialGrid("E1", block);

返される RangePosition は、実際に塗りつぶされた範囲です。

パターンの繰り返し

SetPartialGridRepeatly を使用して、パーシャルグリッドをより大きな範囲にタイル状に繰り返します。対象範囲を埋めるためにパーシャルグリッドが繰り返されます。

SetPartialGridRepeatlyのオーバーロード

シグネチャー戻り値説明
SetPartialGridRepeatly(string addressOrName, PartialGrid grid, PartialGridCopyFlag flags)RangePositionアドレスに繰り返し
SetPartialGridRepeatly(RangePosition range, PartialGrid grid, PartialGridCopyFlag flags)RangePosition範囲に繰り返し
// Create a 2-row pattern
var pattern = new PartialGrid(new object[,] {
    { "A", "B", "C" },
    { "D", "E", "F" },
});

// Tile the pattern across a 10-row range
sheet.SetPartialGridRepeatly("A1:C10", pattern);

PartialGridCopyFlag

PartialGridCopyFlag 列挙型は、パーシャルグリッドのどの要素をコピーするかを制御します。

個別フラグ

16進数説明
CellData0x1セルデータ値
CellFormula0x2セルの数式
CellFormat0x4データ書式設定
CellStyle0x8セルスタイル
HBorder0x10水平罫線
VBorder0x20垂直罫線

複合フラグ

組み合わせ説明
CellPropertiesCellData | CellFormula | CellFormat | CellStyleすべてのセルプロパティ
BordersHBorder | VBorderすべての罫線
AllCellProperties | Bordersすべて(デフォルト)
// Copy only data and formulas (no styles or borders)
sheet.SetPartialGridRepeatly("A1:C10", pattern,
    PartialGridCopyFlag.CellData | PartialGridCopyFlag.CellFormula);

アクションとの使用

SetPartialGridAction は、パーシャルグリッドの貼り付けに対して元に戻す/やり直しのサポートを提供します:

using unvell.ReoGrid.Actions;

var block = sheet.GetPartialGrid("A1:C3");
sheet.DoAction(new SetPartialGridAction(
    new RangePosition("E1:G3"), block, PartialGridCopyFlag.All));

// Undo the paste
grid.Undo();

パーシャルグリッドの比較

bool isEqual = grid1.Equals(grid2, PartialGridCopyFlag.All);
bool dataOnly = grid1.Equals(grid2, PartialGridCopyFlag.CellData);

使用例

ブロックのコピーと貼り付け

// Copy header row with styles
var header = sheet.GetPartialGrid("A1:F1");

// Paste into another worksheet
var sheet2 = grid.Worksheets[1];
sheet2.SetPartialGrid("A1", header);

繰り返しテンプレートの作成

// Define a styled template row
var template = sheet.GetPartialGrid("A1:D2");

// Apply it across 20 rows
sheet.SetPartialGridRepeatly("A3:D22", template);

選択的コピー

// Copy only styles (no data)
sheet.SetPartialGridRepeatly("A1:D10", template,
    PartialGridCopyFlag.CellStyle | PartialGridCopyFlag.Borders);

関連トピック


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