セルの反復処理

ReoGridはすべての有効なセルを反復処理するために使用される IterateCells というメソッドを提供します。ReoGridはページインデックス付きの二次元配列を使用してメモリ内のすべてのセルを管理しています。IterateCells メソッドは空のセル、空のインデックスページ、結合セルをスキップして、より良いパフォーマンスを実現します。

定義:

public void IterateCells(string addressOrName, Func<int, int, ReoGridCell, bool> iterator);
public void IterateCells(RangePosition range, Func<int, int, ReoGridCell, bool> iterator);
public void IterateCells(int row, int col, int rows, int cols, Func<int, int, ReoGridCell, bool> iterator);

使用方法(C#):

sheet.IterateCells(range, (row, col, cell) =>
{
  // return true to continue iterating, return false to abort
  return true;
});

使用方法(VB.NET):

sheet.IterateCells(range, Function(row, col, cell)
  ' return true to continue iterating, return false to abort
  Return True
End Function)

スキップ条件

Iterate Cells

IterateCells メソッドは以下のオブジェクトをスキップします。

  • 空のセル - データもカスタムスタイルも設定されていないセルは、反復処理中にスキップされます。
  • 空のインデックスページ - セルが関連付けられていないインデックスページは、反復処理中にスキップされます。
  • 無効なセル - 他のセルに結合されたセルは無効になり、このメソッドでスキップされます。

サンプル

指定された範囲内の値を合計するサンプル(sum関数のコードビハインド):

public static double Sum(Worksheet sheet, RangePosition range)
{
  double val = 0;

  sheet.IterateCells(range, (row, col, cell) =>
  {
    if (ScriptRunningMachine.IsNumber(cell.Data))
    {
      val += ScriptRunningMachine.GetDoubleValue(cell.Data);
    }
    return true;
  });

  return val;
}

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