罫線

セルに罫線を設定するには SetRangeBorders を利用します。

// 罫線を設定
sheet.SetRangeBorders("B2:D4", BorderPositions.All, new RangeBorderStyle
{
  Color = Color.Black,
  Style = BorderLineStyle.Solid,
});

409

罫線色の設定

罫線スタイルオブジェクト RangeBorderStyle を作成する際に Color プロパティに罫線色を設定します。罫線色の値は .NET の Color 型または ReoGrid の SolidColor 型で設定できます。

sheet.SetRangeBorders("B2:D4", BorderPositions.All, new RangeBorderStyle
{
  Color = Color.Blue,
  Style = BorderLineStyle.Solid,
});

410

SolidColor 型を利用する場合、HTMLのような色の HEX 値で設定できます。

// 罫線を設定
sheet.SetRangeBorders("B2:D4", BorderPositions.All, new RangeBorderStyle
{
  Color = new SolidColor("#FFFF00FF"),
  Style = BorderLineStyle.Solid,
});

411

罫線スタイルの設定

罫線スタイルの指定には BorderLineStyle 列挙体の値を利用します。一部のスタイルは WPF 版では対応していません。

列挙体の値サンプルWindows Form版WPF版
Solidsolid
Dotteddotted
Dasheddashed
Dashed2dashed2
DashDotdashdot
DashDotDotdashdotdot
BoldSolidboldsolid
BoldDottedbolddotted
BoldDashedbolddashed
BoldDashDotbolddashdot
BoldDashDotDotbolddashdotdot
BoldSolidStrongstrongsolid
DoubleLinedoubleline

罫線を Dashed に設定するソースコードは以下の通りです。

// 罫線を設定
sheet.SetRangeBorders("B2:D4", BorderPositions.All, new RangeBorderStyle
{
  Color = Color.Red,
  Style = BorderLineStyle.Dashed,
});

412

罫線位置の設定

SetRangeBorders メソッドはセル範囲に対して罫線を設定します。範囲のどこに罫線を設定するかは二つ目のパラメータに BorderPositions の値を渡して設定します 。この列挙体の値は OR 運算で組み合わせることができます。

例1:範囲の外側に BoldSolid スタイルの罫線を設定

// 罫線を設定
sheet.SetRangeBorders("B2:D4", BorderPositions.Outside, new RangeBorderStyle
{
  Color = Color.Black,
  Style = BorderLineStyle.BoldSolid,
});

413

例2:範囲の中に Dashed スタイルの罫線を設定

例1のソースコードの後に、以下のソースコードを追加します。

// 罫線を設定
sheet.SetRangeBorders("B2:D4", BorderPositions.InsideAll, new RangeBorderStyle
{
  Color = Color.Black,
  Style = BorderLineStyle.Dashed,
});

414

範囲の取得

範囲を取得するには GetRangeBorders メソッドを利用します。

// 範囲の罫線を取得(戻り値は範囲罫線のスタイルオブジェクト)
var rangeStyles = sheet.GetRangeBorders("B2:D4");

// 範囲上側のスタイルを取得
var topStyle = rangeStyles.Top;
// 範囲中すべての水平方向の罫線を取得
var horizontalStyle = rangeStyles.InsideHorizontal;

範囲のプロパティ Border を利用してソースコードを簡略化

SetRangeBorders メソッドを利用するほか、範囲の Border プロパティの利用でも範囲の指定及び取得ができます。

var range = sheet.Ranges["B2:D4"];

range.Border.Outside = new RangeBorderStyle
{
  Color = Color.Black,
  Style = BorderLineStyle.BoldSolid,
};

range.Border.InsideVertical = new RangeBorderStyle
{
  Color = Color.Black,
  Style = BorderLineStyle.Solid,
};

range.Border.InsideHorizontal = new RangeBorderStyle
{
  Color = Color.Black,
  Style = BorderLineStyle.Dotted,
};

415

ReoGrid ではよく使う罫線のスタイルを静的な構造体メンバーとして定義しています。これを利用することでさらにソースコードを簡略化できます。

range.Border.Outside = RangeBorderStyle.BlackBoldSolid;
range.Border.InsideVertical = RangeBorderStyle.BlackSolid;
range.Border.InsideHorizontal = RangeBorderStyle.BlackDotted;

罫線の反復

範囲から罫線の設定を取得したい場合 GetRangeBorders メソッドが効率的ですが、ワークシートまたは指定した範囲内のすべての罫線を取得したい場合は、罫線の反復関数 IterateBorders を利用します。関数の定義は以下の通りです。

sheet.IterateBorders(RowOrColumn列挙体の値、範囲RangePosition、コールバック関数)

パラメータは以下の通りです。

  1. RowOrColumn 列挙体で反復する罫線を指定します。
RowOrColumnの値説明
RowOrColumn.Rowすべての横線を反復する
RowOrColumn.Columnすべての縦線を反復する
RowOrColum.Both全ての罫線を反復する(先に横線、そして縦線)
  1. RangePosition を利用して反復の対象範囲を指定します。
  2. 反復された罫線を処理するためのコールバック関数です。この関数の定義は以下の通りです。
    void IterateBorderHandler(int row, int col, int span, RangeBorderStyle style)
    
    1. row は罫線がワークシートにある横方向の座標です。値は0からです。
    2. col は罫線がワークシートにある縦方向の座標です。値は0からです。
    3. span はその罫線の後に存在する同じスタイルの罫線の数です。値は1からです。
    4. style は罫線のスタイルオブジェクトです。

例:ワークシートにあるすべての罫線を取得する

ワークシートに設定された罫線は以下の通りです。 415

反復のソースコードは以下の通りです。

sheet.IterateBorders(RowOrColumn.Both, RangePosition.EntireRange, (row, col, span, style) =>
{
 var cellAddress = new CellPosition(row, col).ToAddress();

 var styleName = Enum.GetName(typeof(BorderLineStyle), style.Style);

 var msg = string.Format("Address: {0} Span: {1} Color: {2} Style: {3}",
 cellAddress, span, style.Color, style.Style);

 Console.WriteLine(msg);

 return true;
});

実行結果

Address: B2 Span: 3 Color: Color(255, 0, 0, 0) Style: BoldSolid
Address: B3 Span: 3 Color: Color(255, 0, 0, 0) Style: Dotted
Address: B4 Span: 3 Color: Color(255, 0, 0, 0) Style: Dotted
Address: B5 Span: 3 Color: Color(255, 0, 0, 0) Style: BoldSolid
Address: B2 Span: 3 Color: Color(255, 0, 0, 0) Style: BoldSolid
Address: C2 Span: 3 Color: Color(255, 0, 0, 0) Style: Solid
Address: D2 Span: 3 Color: Color(255, 0, 0, 0) Style: Solid
Address: E2 Span: 3 Color: Color(255, 0, 0, 0) Style: BoldSolid

ページの内容は役に立ちましたか?