セル

セルはスプリットシートで管理できる最小単位である。セルの中に文字、数式、およびセルのボディを設定することができる。セルに文字を設定する場合、文字の書式(数字、日付、パーセントなど)を設定することができる。書式の詳しい情報はこちらを参照。

ReoGridPos

ReoGridPosはセルの位置を定義するための構造体である。この構造体にはRowとCol二つのプロパティが存在する。
var pos = new ReoGridPos(2, 1);   // 行: 2, 列: 1
var pos = new ReoGridPos("D5");   // 行: 5, 列: 4

ReoGridPosはセルのアドレスからも作成できる。
string address = pos.ToStringAdderss();  // D5

アドレスの有効性は以下のStaticメソッドによるチェックすることができる。
ReoGridPos.IsValidAddress("D5");       // true
ReoGridPos.IsValidAddress("A1:D5");    // false
ReoGridPos.IsValidAddress("myrange");  // false: 代わりにgrid["myrange"]を利用できる

データ、スタイルおよび書式のないセルは、インスタンスを持たないので、ReoGridは常にReoGridPosを利用してセルを操作する。

セルのデータを設定する

セルのデータはセルに表示する文字や内容など、または数式に計算する際に利用される元データである。データを画面に表示する際に、セルの書式設定によるデータがフォーマットされて画面に表示する。数式の計算にはフォーマットする前のデータを利用する。セルのデータがnullの場合、画面上セルの該当位置に何も表示されない。データがカスタマイズオブジェクトの場合、そのオブジェクトからToStringメソッドを呼び出してデータを取得する、そのデータをフォーマットして画面に表示する。

メソッド

セルのデータを設定する:
grid[0, 0] = 10;                 // 数字
grid[0, 1] = "string"            // 文字列
grid[0, 2] = DateTime.Now;       // 日付

セルの位置をアドレスによる指定することも可能:
grid["C3"] = "=A3+B3";

また、定義された範囲の名前によるデータの指定もできる。(名前付け範囲についてこちらを参照)
grid.DefineNamedRange("mycell", new ReoGridRange("A1"));
grid["mycell"] = 10.12345;

カスタマイズデータ:
public class MyData { 
  public override string ToString() { return "mydata"; }
}
grid[0, 3] = new MyData();

以下のデータタイプは特別処理される。
object[,]        // マトリクス配列として、単一のセルではなくマトリクスと同じ数の範囲にデータを設定する。
PartialGrid      // PartialGridはスプリットシートの一部として、セルではなく対象範囲に設定する。
CellBody         // CellBodyのインスタンスであればデータではなくBodyとして設定される。

または以下のメソッドを利用してデータを設定する:
grid.SetCellData(5, 2, "hello world");
grid.setCellData(new ReoGridPos(5, 2), "hello world");

配列を設定する場合:
grid.SetRangeData(new ReoGridRange(1, 1, 3, 3), new object[ , ] {
    { 'a', 'b', 'c' },
    { 1, 2, 3 },
    { 4, 5, 6 }
  });

あるいは:
grid[1,1] = new object[ , ] {
    { 'a', 'b', 'c' },
    { 1, 2, 3 },
    { 4, 5, 6 }
  });

アクション

// セル(行: 5, 列: 2)
grid.DoAction(new RGSetCellDataAction(5, 2, "hello world"));

スクリプト

スクリプトによるデータを設定する:
grid.getCell(5,2).data = 'hello world';

セルのインスタンス

セルのインスタンスは初めて新規作成するのは、セルのデータやスタイルなどを設定される時である。コントロールが画面に表示されるからそれまで、セルのインスタンスは常にnullになる。下図のように、A1セルはインスタンスを持つが、B1は持たない。

セルのインスタンスを取得する

GetCellメソッドよりセルのインスタンスを取得することができる。
var cell = grid.GetCell(2,3);

インスタンスがnullであることがあるため、念のためいつもチェックを行ったほうがよい。
if (cell != null) {
    ...
}

もうひとつ内部用のメソッドCreateAndGetCellがある、このメソッドはセルのインスタンス判定して、インスタンスがなければ新規作成して戻す。但し通常セルのインスタンスをコントロールによる自動制御されるようにデザインしているため、このメソッドの使用をできるだけ回避することをお勧め。
var cell = CreateAndGetCell(2, 3);

セル書式の自動設定

データがセルに設定される場合、ReoGrid表計算コントロールは自動的にそのデータのタイプをテストする。テスト結果によるデータの一番近い書式を選択して設定する。書式が数字、パーセント、日付などに設定された場合、文字を自動的に右に揃えて表示する。この機能を停止したい場合、Edit_AutoFormatCellフラグをfalseに設定する。
grid.SetSettings(ReoGridSettings.Edit_AutoFormatCell, false);

書式について詳しくはセルの書式設定を参照。

次: 行列

Last edited Feb 1, 2014 at 6:34 AM by unvell, version 11