セルがマージされているかを判別したい

文書番号 : 38126     文書種別 : 使用方法     登録日 : 2015/02/27     最終更新日 : 2015/02/27
文書を印刷する
対象製品
SPREAD for ASP.NET 8.0J
詳細
GetMergeCellメソッドにて任意のセルのマージ範囲を、GetMergeCellsメソッドにて任意のセル範囲に含まれるマージ範囲を取得することができます。

  メモメモ
  • セルをマージするにあたりSPREADは隣り合うセルの一致するデータを調べマージ範囲を決定します。SPREADはこの処理をアプリケーションによってデータがこれ以上変更されないと考えられる時まで行いません。GetMergeCellおよびGetMergeCellsメソッドにてマージ範囲を取得できるのはページのライフサイクルの終盤、ページの表示(Page.PreRender)が完了してからです。Page.LoadイベントでGetMergeCellメソッドを使用してもマージ範囲を取得できませんが、Page.PreRenderCompleteでGetMergeCellメソッドを使用すると取得できます。


◎サンプルコード(VB)
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  If IsPostBack Then
    Return
  End If

  FpSpread1.ActiveSheetView.RowCount = 10

  ' テストデータの設定
  FpSpread1.ActiveSheetView.Cells(0, 1).Value = "apple"
  FpSpread1.ActiveSheetView.Cells(1, 1).Value = "apple"
  FpSpread1.ActiveSheetView.Cells(2, 1).Value = "orange"
  FpSpread1.ActiveSheetView.Cells(3, 1).Value = "pear"
  FpSpread1.ActiveSheetView.Cells(4, 1).Value = "pear"
  FpSpread1.ActiveSheetView.Cells(5, 1).Value = "pear"

  ' 2列目をマージ
  FpSpread1.ActiveSheetView.SetColumnMerge(1, FarPoint.Web.Spread.Model.MergePolicy.Always)
End Sub

Protected Sub Page_PreRenderComplete(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRenderComplete
  Dim arr As ArrayList
  arr = FpSpread1.GetMergeCells(0, 1, 5, 1)

  For Each cells As FarPoint.Web.Spread.Model.CellRange In arr
    GetMergeRange(cells)
  Next
End Sub

Private Sub GetMergeRange(ByVal cells As FarPoint.Web.Spread.Model.CellRange)
  Dim row As Int32 = cells.Row
  Dim col As Int32 = cells.Column
  Dim rowCount As Int32 = cells.RowCount
  Dim colCount As Int32 = cells.ColumnCount

  Dim log As String = ""
  log &= "Merged Range starts : (" & CStr(row) & "," & CStr(col) & ")" & System.Environment.NewLine
  log &= ", RowCount: " & CStr(rowCount) & ", ColCount: " & CStr(colCount) & System.Environment.NewLine

  Label1.Text += "<br>" + log
End Sub

◎サンプルコード(C#)
protected void Page_Load(object sender, EventArgs e)
{
  if (Page.IsPostBack)
  {
    return;
  }

  FpSpread1.ActiveSheetView.RowCount = 10;

  // テストデータの設定
  FpSpread1.ActiveSheetView.Cells[0, 1].Value = "apple";
  FpSpread1.ActiveSheetView.Cells[1, 1].Value = "apple";
  FpSpread1.ActiveSheetView.Cells[2, 1].Value = "orange";
  FpSpread1.ActiveSheetView.Cells[3, 1].Value = "pear";
  FpSpread1.ActiveSheetView.Cells[4, 1].Value = "pear";
  FpSpread1.ActiveSheetView.Cells[5, 1].Value = "pear";

  // 2列目をマージ
  FpSpread1.ActiveSheetView.SetColumnMerge(1, FarPoint.Web.Spread.Model.MergePolicy.Always);
}

protected void Page_PreRenderComplete(object sender, System.EventArgs e)
{
  System.Collections.ArrayList arr = null;
  arr = FpSpread1.GetMergeCells(0, 1, 5, 1);

  foreach (FarPoint.Web.Spread.Model.CellRange cells in arr)
  {
    GetMergeRange(cells);
  }
}

private void GetMergeRange(FarPoint.Web.Spread.Model.CellRange cells)
{
  Int32 row = cells.Row;
  Int32 col = cells.Column;
  Int32 rowCount = cells.RowCount;
  Int32 colCount = cells.ColumnCount;

  string log = "";
  log += "Merged Range starts : (" + Convert.ToString(row) + "," + Convert.ToString(col) + ")" + System.Environment.NewLine;
  log += ", RowCount: " + Convert.ToString(rowCount) + ", ColCount: " + Convert.ToString(colCount) + System.Environment.NewLine;

  Label1.Text += "<br>" + log;
}
キーワード
結合/マージ