MESCIUS SPREAD for Windows Forms 17.0J > 開発者ガイド > シート > 列またはグループのフッタの表示 |
シートには、列フッタ、グループ フッタ(またはその両方)を表示し、数式やテキストなどの情報を指定することができます。列フッタは、シートの下部にある領域です。グループ フッタは、(グループ化機能を使用した場合)グループ化されたデータを含むシートの下部にフッタセルの余分な行です。
API の詳細については、SheetView クラスの ColumnFooter プロパティと、ColumnFooter クラスのさまざまなメンバーを参照してください。
数式を使用して、列フッタまたはグループフッタの結果を計算するには、ColumnFooter オブジェクトの SetAggregationType メソッドを列の正しい数式タイプに設定します。次の図は、列に数式を含むグループバーと、列フッタを表示示します。
グループフッタは、列ヘッダでグループ化した後にグループの最後行に表示される追加の行です。グループが作成した後、GroupFooterVisible プロパティを true に設定する必要があります。Grouped イベントを使用して、ユーザーがグループを作成した後、グループフッタに情報を追加できます。
グループ化の詳細については、グループ化 を参照してください。
シートに対する ColumnFooter の Visible プロパティを設定します。
次のサンプル コードは、列フッタを表示し、セル範囲とテキストの色を設定します。
fpSpread1.Sheets[0].RowCount = 10; fpSpread1.Sheets[0].ColumnCount = 15; // 列フッタを表示します。 fpSpread1.Sheets[0].ColumnFooter.Visible = true; fpSpread1.Sheets[0].ColumnFooter.RowCount = 2; fpSpread1.Sheets[0].ColumnFooter.DefaultStyle.ForeColor = Color.Purple; fpSpread1.Sheets[0].ColumnFooter.Columns[12].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Left; fpSpread1.Sheets[0].ColumnFooter.Cells[0, 12].RowSpan = 2; fpSpread1.Sheets[0].ColumnFooter.Cells[0, 0].Value = "test";
fpSpread1.Sheets(0).RowCount = 10 fpSpread1.Sheets(0).ColumnCount = 15 ' 列フッタを表示します。 fpSpread1.Sheets(0).ColumnFooter.Visible = true fpSpread1.Sheets(0).ColumnFooter.RowCount = 2 fpSpread1.Sheets(0).ColumnFooter.DefaultStyle.ForeColor = Color.Purple fpSpread1.Sheets(0).ColumnFooter.Columns(12).HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Left fpSpread1.Sheets(0).ColumnFooter.Cells(0, 12).RowSpan = 2 fpSpread1.Sheets(0).ColumnFooter.Cells(0, 0).Value = "test
次のサンプル コードは、最初列の値を合計して列フッタに表示し、2 番目のグループの値を合計して、グループフッタに表示します。
private void Form1_Load(object sender, System.EventArgs e) { fpSpread1.Sheets[0].RowCount=8; fpSpread1.Sheets[0].ColumnCount = 15; fpSpread1.Sheets[0].GroupBarInfo.Visible = true; fpSpread1.Sheets[0].AllowGroup = true; fpSpread1.Sheets[0].GroupFooterVisible = true; fpSpread1.Sheets[0].ColumnFooter.Visible = true; fpSpread1.Sheets[0].ColumnFooter.RowCount = 2; fpSpread1.Sheets[0].ColumnFooter.Columns[12].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Left; fpSpread1.Sheets[0].ColumnFooter.Cells[0, 12].RowSpan = 2; //値 for (int r = 0; r < fpSpread1.Sheets[0].RowCount; r++) { for (int j = 0; j < fpSpread1.Sheets[0].ColumnCount; j++) { fpSpread1.Sheets[0].Models.Data.SetValue(r, j, j + r * fpSpread1.Sheets[0].ColumnCount); } } int i = 0; fpSpread1.Sheets[0].ColumnFooter.SetAggregationType(0,1, FarPoint.Win.Spread.Model.AggregationType.Sum); fpSpread1.Sheets[0].ColumnFooter.Cells[0, i].Value = "Sum"; } private void fpSpread1_Grouped(object sender, EventArgs e) FarPoint.Win.Spread.Model.GroupDataModel gdm; gdm = (FarPoint.Win.Spread.Model.GroupDataModel)fpSpread1.ActiveSheet.Models.Data; gdm.GroupFooterVisible = true; FarPoint.Win.Spread.Model.Group g1 = (FarPoint.Win.Spread.Model.Group)gdm.Groups[1]; ((FarPoint.Win.Spread.Model.IAggregationSupport)g1.GroupFooter.DataModel).SetCellAggregationType(0, 0, FarPoint.Win.Spread.Model.AggregationType.Sum); fpSpread1.ActiveSheet.Models.Data = gdm; }
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load fpSpread1.Sheets(0).RowCount = 8 fpSpread1.Sheets(0).ColumnCount = 15 fpSpread1.Sheets(0).GroupBarInfo.Visible = True fpSpread1.Sheets(0).AllowGroup = True fpSpread1.Sheets(0).GroupFooterVisible = True fpSpread1.Sheets(0).ColumnFooter.Visible = True fpSpread1.Sheets(0).ColumnFooter.RowCount = 2 fpSpread1.Sheets(0).ColumnFooter.Columns(12).HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Left '値 Dim r As Integer Dim j As Integer For r = 0 To fpSpread1.Sheets(0).RowCount For j = 0 To fpSpread1.Sheets(0).ColumnCount fpSpread1.Sheets(0).Models.Data.SetValue(r, j, j + r * fpSpread1.Sheets(0).ColumnCount) Next j Next r Dim i As Integer i = 0 fpSpread1.Sheets(0).ColumnFooter.SetAggregationType(0, 1, FarPoint.Win.Spread.Model.AggregationType.Sum) fpSpread1.Sheets(0).ColumnFooter.Cells(0, i).Value = "Sum" End Sub Private Sub fpSpread1_Grouped(ByVal sender As Object, ByVal e As System.EventArgs) Handles fpSpread1.Grouped Dim gdm As FarPoint.Win.Spread.Model.GroupDataModel Dim g1 As FarPoint.Win.Spread.Model.Group gdm = fpSpread1.Sheets(0).Models.Data gdm.GroupFooterVisible = True g1 = gdm.Groups(1) CType(g1.GroupFooter.DataModel, FarPoint.Win.Spread.Model.IAggregationSupport).SetCellAggregationType(0, 0, FarPoint.Win.Spread.Model.AggregationType.Sum) fpSpread1.ActiveSheet.Models.Data = gdm End Sub
次のサンプル コードは、列フッタを表示し、別のシートから数式を追加します。
fpSpread1.Sheets.Count = 3; fpSpread1.Sheets[0].RowCount = 8; fpSpread1.Sheets[0].ColumnCount = 15; fpSpread1.Sheets[0].GroupBarInfo.Visible = true; fpSpread1.Sheets[0].AllowGroup = true; fpSpread1.Sheets[0].GroupFooterVisible = true; fpSpread1.Sheets[0].ColumnFooter.Visible = true; fpSpread1.Sheets[0].ColumnFooter.RowCount = 2; fpSpread1.Sheets[0].ColumnFooter.Columns[12].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Left; fpSpread1.Sheets[0].ColumnFooter.Cells[0, 12].RowSpan = 2; //値 for (int r = 0; r < fpSpread1.Sheets[0].RowCount; r++) { for (int j = 0; j < fpSpread1.Sheets[0].ColumnCount; j++) { fpSpread1.Sheets[0].Models.Data.SetValue(r, j, j + r * fpSpread1.Sheets[0].ColumnCount); } } int i = 0; fpSpread1.Sheets[1].RowCount = 10; fpSpread1.Sheets[1].ColumnCount = 15; fpSpread1.Sheets[1].GroupBarInfo.Visible = true; fpSpread1.Sheets[1].AllowGroup = true; fpSpread1.Sheets[1].GroupFooterVisible = true; fpSpread1.Sheets[1].ColumnFooter.Visible = true; fpSpread1.Sheets[1].ColumnFooter.RowCount = 2; fpSpread1.Sheets[1].ColumnFooter.Columns[12].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Left; fpSpread1.Sheets[1].ColumnFooter.Cells[0, 12].RowSpan = 2; //値 for (int r = 0; r < fpSpread1.Sheets[1].RowCount; r++) { for (int j = 0; j < fpSpread1.Sheets[1].ColumnCount; j++) { fpSpread1.Sheets[1].Models.Data.SetValue(r, j, j + r * fpSpread1.Sheets[1].ColumnCount); } } fpSpread1.Sheets[0].ColumnFooter.Cells[0, i].Value = "2ndSum"; fpSpread1.Sheets[0].ColumnFooter.Cells[0, 1].Formula = "SUM(Sheet2!A:A)";
fpSpread1.Sheets.Count = 3 fpSpread1.Sheets(0).RowCount = 8 fpSpread1.Sheets(0).ColumnCount = 15 fpSpread1.Sheets(0).GroupBarInfo.Visible = True fpSpread1.Sheets(0).AllowGroup = True fpSpread1.Sheets(0).GroupFooterVisible = True fpSpread1.Sheets(0).ColumnFooter.Visible = True fpSpread1.Sheets(0).ColumnFooter.RowCount = 2 fpSpread1.Sheets(0).ColumnFooter.Columns(12).HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Left '値 Dim r As Integer Dim j As Integer For r = 0 To fpSpread1.Sheets(0).RowCount For j = 0 To fpSpread1.Sheets(0).ColumnCount fpSpread1.Sheets(0).Models.Data.SetValue(r, j, j + r * fpSpread1.Sheets(0).ColumnCount) Next j Next r fpSpread1.Sheets(1).RowCount = 10 fpSpread1.Sheets(1).ColumnCount = 15 fpSpread1.Sheets(1).GroupBarInfo.Visible = True fpSpread1.Sheets(1).AllowGroup = True fpSpread1.Sheets(1).GroupFooterVisible = True fpSpread1.Sheets(1).ColumnFooter.Visible = True fpSpread1.Sheets(1).ColumnFooter.RowCount = 2 fpSpread1.Sheets(1).ColumnFooter.Columns(12).HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Left fpSpread1.Sheets(1).ColumnFooter.Cells(0, 12).RowSpan = 2 '値 For r = 0 To fpSpread1.Sheets(1).RowCount For j = 0 To fpSpread1.Sheets(1).ColumnCount fpSpread1.Sheets(1).Models.Data.SetValue(r, j, j + r * fpSpread1.Sheets(1).ColumnCount) Next j Next r Dim i As Integer i = 0 fpSpread1.Sheets(0).ColumnFooter.Cells(0, i).Value = "2ndSum" fpSpread1.Sheets(0).ColumnFooter.Cells(0, 1).Formula = "SUM(Sheet2!A:A)"
Spread では、新しいスタイルシステムで列フッタ書式を表示するには、IRange インターフェースの NumberFormat プロパティを使用します。
次のサンプル コードでは、数値型のフッタにカンマを桁区切り文字として表示します。
// Spreadで新しいスタイルシステムを設定します。 fpSpread1.LegacyBehaviors = LegacyBehaviors.None; fpSpread1.Reset(); fpSpread1.Sheets[0].Cells[0, 1, 10, 1].Value = 1000; fpSpread1.Sheets[0].ColumnFooterVisible = true; fpSpread1.Sheets[0].ColumnFooterRowCount = 1; fpSpread1.Sheets[0].ColumnFooter.SetAggregationType(0, 1, FarPoint.Win.Spread.Model.AggregationType.Sum); // 列フッタに数値書式を設定します。 fpSpread1.AsWorkbook().ActiveSheet.ColumnFooter.Cells[0, 1].NumberFormat = "#,##0";
' Spreadで新しいスタイルシステムを設定します。 fpSpread1.LegacyBehaviors = LegacyBehaviors.None fpSpread1.Reset() fpSpread1.Sheets(0).Cells(0, 1, 10, 1).Value = 1000 fpSpread1.Sheets(0).ColumnFooterVisible = True fpSpread1.Sheets(0).ColumnFooterRowCount = 1 fpSpread1.Sheets(0).ColumnFooter.SetAggregationType(0, 1, FarPoint.Win.Spread.Model.AggregationType.Sum) ' 列フッタに数値書式を設定します。 fpSpread1.AsWorkbook().ActiveSheet.ColumnFooter.Cells(0, 1).NumberFormat = "#,##0"
列フッタでのテキストの折り返しをカスタマイズするには、IRange インターフェースの WrapText プロパティを true に設定します。 セル内で折り返されたテキストを適切に表示するには、ColumnFooter クラスの RowHeight プロパティを使用して行の高さを調整する必要があります。
この WrapText プロパティを適用する前に、SpreadSkin クラスの ColumnHeaderRenderer.WordWrap2 プロパティの値が null に設定されていることを確認してください。 デフォルトでは、デフォルトスキンの場合のみ、ColumnHeaderRenderer.WordWrap2 値は null です。
次の図は、列フッタ内の折り返されたテキストの例です。
次のサンプル コードは、IRange.WrapText プロパティを使用して列フッタのテキストを折り返す方法を示しています。
// 列フッタ内のテキストを折り返します activeSheet.ColumnFooter.Visible = true; activeSheet.ColumnFooter.Cells.RowHeight = 90; activeSheet.ColumnFooter.Cells[0, 0].Value = "This is a long footer text"; activeSheet.ColumnFooter.Cells[0, 0].WrapText = true;
' 列フッタ内のテキストを折り返します activeSheet.ColumnFooter.Visible = True activeSheet.ColumnFooter.Cells.RowHeight = 90 activeSheet.ColumnFooter.Cells(0, 0).Value = "This is a long footer text" activeSheet.ColumnFooter.Cells(0, 0).WrapText = True