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
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 |
以下の画像は、上記のコードを使用して、結果を示しています。
この機能は、グラフィカルなセル型の描画には対応していません。