セルスタイル

セルにスタイルを設定すると、セル中データやテキストの表示を自由に変更できます。

ja69

スタイルを設定するには、ワークシートの SetRangeStyles メソッドを利用します。

sheet.SetRangeStyles("B2", new WorksheetRangeStyle
{
  // どのスタイルを設定するかのフラグ
  Flag = PlainStyleFlag.BackColor,

  // 塗りつぶし色を設定
  BackColor = Color.Goldenrod,
});

結果:

399

tips スタイルオブジェクト WorksheetRangeStyle を作成する際に、スタイルの値を設定するほか、Flag プロパティに対象となるスタイルのフラグを指定する必要があります。

tips セルインスタンスの 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"] = "複数スタイルの設定サンプル";

結果:

400

塗りつぶし色の設定

セルまたは結合したセルに塗りつぶし色を設定できます。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"),
});

結果:

401

スタイルオブジェクトの BackColor プロパティに .NET フレームワークの Color 型または ReoGrid の SolidColor 型を設定できます。SolidColor 型は RGB 値の指定または HTML のような HEX 値の指定ができます。

塗りつぶしパターンの設定

塗りつぶしパターンを設定するには Flag に PlainStyleFlag.BackAll を指定します。BackAll フラグは BackColorFillPatternColor と 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,
});

結果:

402

フォントとテキスト色の設定

フォントとテキスト色の設定には 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";

結果:

404

横方向と縦方向の文字配置の設定

横方向の文字配置を設定するには HorizontalAlign フラグを指定します。スタイルオブジェクトの HAlign プロパティに ReoGridHorAlign 列挙体の LeftCenter および 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";

結果:

403

文字のインデント設定

文字のインデントを利用すると設定したスペースで文字をずらすことができます。

// スタイル設定
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;

結果:

405

文字の改行モードの設定

文字の表示範囲がセルの幅より大きい場合、改行モードによって改行し表示できます。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 表計算スプレッドシートコンポーネントです";

結果:

文字の回転角度の設定

回転角度の設定について、「セル中テキストの回転」をご覧ください。

セルボディの余白の設定

セルボディはカスタマイズしたセル型を作成するためのインターフェイスです。セルボディについて詳しくは、「カスタマイズしたセル型」をご覧ください。

セルボディをセルに格納した場合、セルボディをセルの中に配置する位置を余白を使って微調整できます。余白を設定しない場合、セルボディのサイズがセルのサイズとなります。

ja71

余白のサイズは上、下、左、右、四つの辺に設定できます。

// スタイル設定
sheet.SetRangeStyles("C2", new WorksheetRangeStyle
{
  Flag = PlainStyleFlag.Padding,
  Padding = new PaddingValue(5),
});

// セルボディ設定(ボタンセル)
sheet["B2"] = new ButtonCell("Browse");
sheet["C2"] = new ButtonCell("Browse");

結果:

407

セルインスタンスを利用したソースコードの効率化

スタイル設定でたくさんのセルに同じスタイルを設定する場合、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;

結果:

408

文字のインデント設定のサンプルと同様な結果でソースコードを大幅に簡易化できました。

スタイルの取得

セルスタイルの取得には、ワークシートのメソッド GetCellStyles を利用します。またはセルインスタンスの Style オブジェクトを利用して取得できます。取得したスタイルオブジェクトは、どのスタイル項目を含んでいるか、Flag プロパティの確認が必要です。

// スタイル取得
var style = sheet.GetCellStyles("B2");

if ((style.Flag & PlainStyleFlag.TextColor) == PlainStyleFlag.TextColor)
{
  // テキスト色のスタイル項目が含まれている
}

または Style プロパティから直接取得できます。

sheet.Cells["B2"].Style.TextColor