MESCIUS SPREAD for Windows Forms 17.0J
列またはグループのフッタの表示

シートには、列フッタ、グループ フッタ(またはその両方)を表示し、数式やテキストなどの情報を指定することができます。列フッタは、シートの下部にある領域です。グループ フッタは、(グループ化機能を使用した場合)グループ化されたデータを含むシートの下部にフッタセルの余分な行です。

API の詳細については、SheetView クラスの ColumnFooter プロパティと、ColumnFooter クラスのさまざまなメンバーを参照してください。

数式を使用して、列フッタまたはグループフッタの結果を計算するには、ColumnFooter オブジェクトの SetAggregationType メソッドを列の正しい数式タイプに設定します。次の図は、列に数式を含むグループバーと、列フッタを表示します。

Spread control with red grid lines

グループフッタは、列ヘッダでグループ化した後にグループの最後行に表示される追加の行です。グループが作成した後、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

設定方法

  1. シートの ColumnFooter の Visible プロパティを設定します。
  2. 列の SetAggregationType メソッドを設定します。

サンプルコード

次のサンプル コードは、最初列の値を合計して列フッタに表示し、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

グループフッターの列スタイル

SPREADでは、IGroupFooterStyleSupportインターフェースのFarPoint.Win.Spread.ModelGroupFooterクラスにあるStyleManagerプロパティを使用して、グループフッターの列の外観をカスタマイズできます。

以下のサンプルコードのように、StyleManagerプロパティを利用してグループフッター内の列スタイルを設定できます。

C#
コードのコピー
// グループフッターの列スタイルを設定します。
SheetView STestActiveSheet = fpSpread1.ActiveSheet;
IWorksheet TestActiveSheet = fpSpread1.AsWorkbook().ActiveSheet;
STestActiveSheet.RowCount = 6;
STestActiveSheet.ColumnCount = 4;
STestActiveSheet.Cells[0, 0, 3, 0].Value = 1;
STestActiveSheet.Cells[4, 0, 5, 0].Value = 2;
STestActiveSheet.Cells[0, 2, 3, 2].Value = DateTime.Today;
TestActiveSheet.Columns["C:C"].ColumnWidth = 150;
DefaultGroupFooterCollection defaultGroupFooterCol = new DefaultGroupFooterCollection(6, 4);
DefaultGroupFooter defaultGroupFooter = defaultGroupFooterCol[0];
ISheetDataModel model = defaultGroupFooter.DataModel as ISheetDataModel;
(model as IAggregationSupport).SetCellAggregationType(0, 2, AggregationType.Avg);
fpSpread1.ActiveSheet.DefaultGroupFooter = defaultGroupFooterCol;
GroupDataModel gdm = new GroupDataModel(STestActiveSheet.Models.Data);
STestActiveSheet.Models.Data = gdm;
gdm.Group(new SortInfo[] { new SortInfo(0, true) }, null);
fpSpread1.ActiveSheet.GroupFooterVisible = true;
var style = new StyleInfo();
style.BackColor = System.Drawing.Color.LightBlue;
DateTimeCellType dt = new DateTimeCellType();
dt.DateTimeFormat = DateTimeFormat.UserDefined;
dt.UserDefinedFormat = "dd.MM.yyyy HH:mm:ss";
style.CellType = dt;
style.HorizontalAlignment = CellHorizontalAlignment.Left;
for (int i = 0; i < gdm.Groups.Count; i++)
{
    var group = (Group)gdm.Groups[i];
    group.GroupFooter.StyleManager.SetColumnStyle(2, style);
}
VB
コードのコピー
' グループフッターの列スタイルを設定します。
Dim STestActiveSheet As SheetView = fpSpread1.ActiveSheet
Dim TestActiveSheet As IWorksheet = fpSpread1.AsWorkbook().ActiveSheet
STestActiveSheet.RowCount = 6
STestActiveSheet.ColumnCount = 4
STestActiveSheet.Cells(0, 0, 3, 0).Value = 1
STestActiveSheet.Cells(4, 0, 5, 0).Value = 2
STestActiveSheet.Cells(0, 2, 3, 2).Value = Date.Today
TestActiveSheet.Columns("C:C").ColumnWidth = 150
Dim defaultGroupFooterCol As DefaultGroupFooterCollection = New DefaultGroupFooterCollection(6, 4)
Dim defaultGroupFooter As DefaultGroupFooter = defaultGroupFooterCol(0)
Dim model As ISheetDataModel = TryCast(defaultGroupFooter.DataModel, ISheetDataModel)
TryCast(model, IAggregationSupport).SetCellAggregationType(0, 2, AggregationType.Avg)
fpSpread1.ActiveSheet.DefaultGroupFooter = defaultGroupFooterCol
Dim gdm As GroupDataModel = New GroupDataModel(STestActiveSheet.Models.Data)
STestActiveSheet.Models.Data = gdm
gdm.Group(New SortInfo() {New SortInfo(0, True)}, Nothing)
fpSpread1.ActiveSheet.GroupFooterVisible = True
Dim style = New StyleInfo()
style.BackColor = Drawing.Color.LightBlue
Dim dt As DateTimeCellType = New DateTimeCellType()
dt.DateTimeFormat = DateTimeFormat.UserDefined
dt.UserDefinedFormat = "dd.MM.yyyy HH:mm:ss"
style.CellType = dt
style.HorizontalAlignment = CellHorizontalAlignment.Left
For i As Integer = 0 To gdm.Groups.Count - 1
    Dim group = CType(gdm.Groups(i), Group)
    group.GroupFooter.StyleManager.SetColumnStyle(2, style)
Next

以下の画像は、上記のコードを使用して、結果を示しています。


制限事項

この機能は、グラフィカルなセル型の描画には対応していません。

参照

 

 


© MESCIUS inc. All rights reserved.