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 },
});
プロパティ
| プロパティ | 型 | 説明 |
|---|---|---|
Rows | int | パーシャルグリッドの行数 |
Columns | int | パーシャルグリッドの列数 |
ワークシートからの抽出
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進数 | 説明 |
|---|---|---|
CellData | 0x1 | セルデータ値 |
CellFormula | 0x2 | セルの数式 |
CellFormat | 0x4 | データ書式設定 |
CellStyle | 0x8 | セルスタイル |
HBorder | 0x10 | 水平罫線 |
VBorder | 0x20 | 垂直罫線 |
複合フラグ
| 値 | 組み合わせ | 説明 |
|---|---|---|
CellProperties | CellData | CellFormula | CellFormat | CellStyle | すべてのセルプロパティ |
Borders | HBorder | VBorder | すべての罫線 |
All | CellProperties | 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);