セルにスタイルを設定すると、セル中データやテキストの表示を自由に変更できます。
スタイルを設定するには、ワークシートの SetRangeStyles
メソッドを利用します。
sheet.SetRangeStyles("B2", new WorksheetRangeStyle { // どのスタイルを設定するかのフラグ Flag = PlainStyleFlag.BackColor, // 塗りつぶし色を設定 BackColor = Color.Goldenrod, });
結果:
スタイルオブジェクト WorksheetRangeStyle を作成する際に、スタイルの値を設定するほか、Flag プロパティに対象となるスタイルのフラグを指定する必要があります。
セルインスタンスの
Style
プロパティの利用でもセルスタイルの設定ができますが、複数セルに同じスタイルを設定する場合 SetRangeStyles
がより効率的です。
スタイル項目
SetRangeStyles
メソッドの呼び出しでは、一回で複数のスタイル項目を設定できます。対象となるスタイル項目は PlainStyleFlag
列挙体の値で指定できます。この列挙体の値は OR 運算子で組み合わせることができます。
項目 | 列挙体の値 | プロパティ名 | プロパティの型 |
塗りつぶし色 | BackColor | BackColor | Color 型または ReoGrid の SolidColor 型 |
塗りつぶしパターン | FillPatternStyle | FillPatternStyle | ReoGridの HatchStyles 型 |
塗りつぶしパターン色 | FillPatternColor | FillPatternColor | Color 型または ReoGrid の SolidColor 型 |
テキスト色 | TextColor | TextColor | Color 型または ReoGrid の SolidColor 型 |
フォント名 | FontName | FontName | 文字列 |
フォントサイズ | FontSize | FontSize | Windows Form版では float 型;WPF版では double 型 |
太字 | FontStyleBold | Bold | bool型 |
イタリック | FontStyleItalic | Italic | bool型 |
下線 | FontStyleUnderline | Underline | bool型 |
取り消し線 | FontStyleStrikethrough | Strikethrough | bool型 |
横方向文字揃え | HorizontalAlign | HAlign | ReoGridHorAlign 列挙体の値 |
縦方向文字揃え | VerticalAlign | VAlign | ReoGridVerAlign 列挙体の値 |
文字のインデント | Indent | Indent | ushort型 |
改行モード | TextWrap | TextWrapMode | TextWrapMode 列挙体の値 |
回転角度 | RotateAngle | RotateAngle | int型(-90°~90°) |
セルボディの余白 | Padding | Padding | PaddingValue 構造体 |
複数スタイルの設定
スタイルオブジェクト WorksheetRangeStyle
を作成する際に Flag
プロパティに対象となるスタイル項目を複数指定します。
sheet.SetRangeStyles("B2", new WorksheetRangeStyle { Flag = PlainStyleFlag.BackColor | PlainStyleFlag.TextColor | PlainStyleFlag.TextWrap, BackColor = Color.LightGoldenrodYellow, TextColor = Color.Red, TextWrapMode = TextWrapMode.WordBreak, }); sheet["B2"] = "複数スタイルの設定サンプル";
結果:
塗りつぶし色の設定
セルまたは結合したセルに塗りつぶし色を設定できます。WorksheetRangeStyle
オブジェクトを作成し Flag
とスタイル項目のプロパティを設定します。
sheet.SetRangeStyles("B2", new WorksheetRangeStyle { Flag = PlainStyleFlag.BackColor, BackColor = Color.Goldenrod, }); sheet.SetRangeStyles("C2", new WorksheetRangeStyle { Flag = PlainStyleFlag.BackColor, BackColor = Color.Beige, }); sheet.SetRangeStyles("B3", new WorksheetRangeStyle { Flag = PlainStyleFlag.BackColor, BackColor = new SolidColor(135, 120, 240), }); sheet.SetRangeStyles("C3", new WorksheetRangeStyle { Flag = PlainStyleFlag.BackColor, BackColor = new SolidColor("#FF33BB66"), });
結果:
スタイルオブジェクトの BackColor
プロパティに .NET フレームワークの Color
型または ReoGrid の SolidColor
型を設定できます。SolidColor
型は RGB 値の指定または HTML のような HEX 値の指定ができます。
塗りつぶしパターンの設定
塗りつぶしパターンを設定するには Flag
に PlainStyleFlag.BackAll
を指定します。BackAll
フラグは BackColor
、FillPatternColor
と FillPatternStyle
フラグを含んでいます。
sheet.SetRangeStyles("B2", new WorksheetRangeStyle { Flag = PlainStyleFlag.BackAll, BackColor = Color.White, FillPatternColor = Color.Green, FillPatternStyle = HatchStyles.DottedDiamond, }); sheet.SetRangeStyles("C2", new WorksheetRangeStyle { Flag = PlainStyleFlag.BackAll, BackColor = Color.Yellow, FillPatternColor = Color.Turquoise, FillPatternStyle = HatchStyles.DarkVertical, }); sheet.SetRangeStyles("B3", new WorksheetRangeStyle { Flag = PlainStyleFlag.BackAll, BackColor = Color.Black, FillPatternColor = Color.DarkSlateBlue, FillPatternStyle = HatchStyles.DottedGrid, }); sheet.SetRangeStyles("C3", new WorksheetRangeStyle { Flag = PlainStyleFlag.BackAll, BackColor = Color.Silver, FillPatternColor = Color.Black, FillPatternStyle = HatchStyles.Percent20, });
結果:
フォントとテキスト色の設定
フォントとテキスト色の設定には FontName、FontSize、TextColor フラグなどを利用します。
// スタイル設定 sheet.SetRangeStyles("B2", new WorksheetRangeStyle { Flag = PlainStyleFlag.TextColor, TextColor = Color.Blue, }); sheet.SetRangeStyles("C2", new WorksheetRangeStyle { Flag = PlainStyleFlag.FontName, FontName = "Meiryo", }); sheet.SetRangeStyles("B3", new WorksheetRangeStyle { Flag = PlainStyleFlag.FontStyleBold, Bold=true, }); sheet.SetRangeStyles("C3", new WorksheetRangeStyle { Flag = PlainStyleFlag.FontName | PlainStyleFlag.FontSize | PlainStyleFlag.FontStyleItalic, FontName = "Times New Roman", FontSize = 16, Italic = true, }); // データ設定 sheet["B2"] = "Blue"; sheet["C2"] = "フォント名"; sheet["B3"] = "太字"; sheet["C3"] = "Times New Roman";
結果:
横方向と縦方向の文字配置の設定
横方向の文字配置を設定するには HorizontalAlign
フラグを指定します。スタイルオブジェクトの HAlign
プロパティに ReoGridHorAlign
列挙体の Left
、Center
および Right
の値を設定します。
縦方向の文字配置の設定方法は横方向と同様で、VerticalAlign
フラグと VAlign
プロパティを利用します。
// スタイル設定 sheet.SetRangeStyles("B2", new WorksheetRangeStyle { Flag = PlainStyleFlag.HorizontalAlign, HAlign = ReoGridHorAlign.Center, }); sheet.SetRangeStyles("C2", new WorksheetRangeStyle { Flag = PlainStyleFlag.VerticalAlign, VAlign = ReoGridVerAlign.Top, }); // データ設定 sheet["B2"] = "Center"; sheet["C2"] = "Top";
結果:
文字のインデント設定
文字のインデントを利用すると設定したスペースで文字をずらすことができます。
// スタイル設定 sheet.SetRangeStyles("B2", new WorksheetRangeStyle { Flag = PlainStyleFlag.Indent, Indent = 1, }); sheet.SetRangeStyles("B3", new WorksheetRangeStyle { Flag = PlainStyleFlag.Indent, Indent = 2, }); sheet.SetRangeStyles("B4", new WorksheetRangeStyle { Flag = PlainStyleFlag.Indent, Indent = 3, }); sheet.SetRangeStyles("C5", new WorksheetRangeStyle { Flag = PlainStyleFlag.Indent, Indent = 1, }); sheet.SetRangeStyles("C6", new WorksheetRangeStyle { Flag = PlainStyleFlag.Indent, Indent = 2, }); sheet.SetRangeStyles("C7", new WorksheetRangeStyle { Flag = PlainStyleFlag.Indent, Indent = 3, }); // データ設定 sheet["B2"] = "Level 1"; sheet["B3"] = "Level 2"; sheet["B4"] = "Level 3"; sheet["C5"] = 12345; sheet["C6"] = 34567; sheet["C7"] = 56789;
結果:
文字の改行モードの設定
文字の表示範囲がセルの幅より大きい場合、改行モードによって改行し表示できます。B2 セルは改行モードなし、B3 セルは単語改行(WordBreak)に設定します。
// スタイル設定 sheet.SetRangeStyles("B2", new WorksheetRangeStyle { Flag = PlainStyleFlag.TextWrap, TextWrapMode= TextWrapMode.NoWrap, }); sheet.SetRangeStyles("B3", new WorksheetRangeStyle { Flag = PlainStyleFlag.TextWrap, TextWrapMode = TextWrapMode.WordBreak, }); // データ設定 sheet["B2"] = "ReoGrid は .NET 表計算スプレッドシートコンポーネントです"; sheet["B3"] = "ReoGrid は .NET 表計算スプレッドシートコンポーネントです";
結果:
文字の回転角度の設定
回転角度の設定について、「セル中テキストの回転」をご覧ください。
セルボディの余白の設定
セルボディはカスタマイズしたセル型を作成するためのインターフェイスです。セルボディについて詳しくは、「カスタマイズしたセル型」をご覧ください。
セルボディをセルに格納した場合、セルボディをセルの中に配置する位置を余白を使って微調整できます。余白を設定しない場合、セルボディのサイズがセルのサイズとなります。
余白のサイズは上、下、左、右、四つの辺に設定できます。
// スタイル設定 sheet.SetRangeStyles("C2", new WorksheetRangeStyle { Flag = PlainStyleFlag.Padding, Padding = new PaddingValue(5), }); // セルボディ設定(ボタンセル) sheet["B2"] = new ButtonCell("Browse"); sheet["C2"] = new ButtonCell("Browse");
結果:
セルインスタンスを利用したソースコードの効率化
スタイル設定でたくさんのセルに同じスタイルを設定する場合、SetRangeStyles
メソッドが便利で効率的です。セルごとに違うスタイルを設定する場合、セルインスタンスの Style
プロパティを利用するとソースコードを簡易にできます。
// スタイル設定 sheet.Cells["B2"].Style.Indent = 1; sheet.Cells["B3"].Style.Indent = 2; sheet.Cells["B4"].Style.Indent = 3; sheet.Cells["C5"].Style.Indent = 1; sheet.Cells["C6"].Style.Indent = 2; sheet.Cells["C7"].Style.Indent = 3; // データ設定 sheet["B2"] = "Level 1"; sheet["B3"] = "Level 2"; sheet["B4"] = "Level 3"; sheet["C5"] = 12345; sheet["C6"] = 34567; sheet["C7"] = 56789;
結果:
文字のインデント設定のサンプルと同様な結果でソースコードを大幅に簡易化できました。
スタイルの取得
セルスタイルの取得には、ワークシートのメソッド GetCellStyles
を利用します。またはセルインスタンスの Style
オブジェクトを利用して取得できます。取得したスタイルオブジェクトは、どのスタイル項目を含んでいるか、Flag プロパティの確認が必要です。
// スタイル取得 var style = sheet.GetCellStyles("B2"); if ((style.Flag & PlainStyleFlag.TextColor) == PlainStyleFlag.TextColor) { // テキスト色のスタイル項目が含まれている }
または Style プロパティから直接取得できます。
sheet.Cells["B2"].Style.TextColor