罫線
セルに罫線を設定するには SetRangeBorders
を利用します。
// 罫線を設定
sheet.SetRangeBorders("B2:D4", BorderPositions.All, new RangeBorderStyle
{
Color = Color.Black,
Style = BorderLineStyle.Solid,
});
罫線色の設定
罫線スタイルオブジェクト RangeBorderStyle
を作成する際に Color
プロパティに罫線色を設定します。罫線色の値は .NET の Color
型または ReoGrid の SolidColor
型で設定できます。
sheet.SetRangeBorders("B2:D4", BorderPositions.All, new RangeBorderStyle
{
Color = Color.Blue,
Style = BorderLineStyle.Solid,
});
SolidColor
型を利用する場合、HTMLのような色の HEX 値で設定できます。
// 罫線を設定
sheet.SetRangeBorders("B2:D4", BorderPositions.All, new RangeBorderStyle
{
Color = new SolidColor("#FFFF00FF"),
Style = BorderLineStyle.Solid,
});
罫線スタイルの設定
罫線スタイルの指定には BorderLineStyle
列挙体の値を利用します。一部のスタイルは WPF 版では対応していません。
列挙体の値 | サンプル | Windows Form版 | WPF版 |
---|---|---|---|
Solid | ● | ● | |
Dotted | ● | ● | |
Dashed | ● | ● | |
Dashed2 | ● | ● | |
DashDot | ● | ||
DashDotDot | ● | ||
BoldSolid | ● | ● | |
BoldDotted | ● | ● | |
BoldDashed | ● | ● | |
BoldDashDot | ● | ||
BoldDashDotDot | ● | ||
BoldSolidStrong | ● | ● | |
DoubleLine | ● | ● |
罫線を Dashed
に設定するソースコードは以下の通りです。
// 罫線を設定
sheet.SetRangeBorders("B2:D4", BorderPositions.All, new RangeBorderStyle
{
Color = Color.Red,
Style = BorderLineStyle.Dashed,
});
罫線位置の設定
SetRangeBorders
メソッドはセル範囲に対して罫線を設定します。範囲のどこに罫線を設定するかは二つ目のパラメータに BorderPositions
の値を渡して設定します 。この列挙体の値は OR 運算で組み合わせることができます。
例1:範囲の外側に BoldSolid スタイルの罫線を設定
// 罫線を設定
sheet.SetRangeBorders("B2:D4", BorderPositions.Outside, new RangeBorderStyle
{
Color = Color.Black,
Style = BorderLineStyle.BoldSolid,
});
例2:範囲の中に Dashed スタイルの罫線を設定
例1のソースコードの後に、以下のソースコードを追加します。
// 罫線を設定
sheet.SetRangeBorders("B2:D4", BorderPositions.InsideAll, new RangeBorderStyle
{
Color = Color.Black,
Style = BorderLineStyle.Dashed,
});
範囲の取得
範囲を取得するには 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,
};
ReoGrid ではよく使う罫線のスタイルを静的な構造体メンバーとして定義しています。これを利用することでさらにソースコードを簡略化できます。
range.Border.Outside = RangeBorderStyle.BlackBoldSolid;
range.Border.InsideVertical = RangeBorderStyle.BlackSolid;
range.Border.InsideHorizontal = RangeBorderStyle.BlackDotted;
罫線の反復
範囲から罫線の設定を取得したい場合 GetRangeBorders
メソッドが効率的ですが、ワークシートまたは指定した範囲内のすべての罫線を取得したい場合は、罫線の反復関数 IterateBorders
を利用します。関数の定義は以下の通りです。
sheet.IterateBorders(RowOrColumn列挙体の値、範囲RangePosition、コールバック関数)
パラメータは以下の通りです。
RowOrColumn
列挙体で反復する罫線を指定します。
RowOrColumnの値 | 説明 |
---|---|
RowOrColumn.Row | すべての横線を反復する |
RowOrColumn.Column | すべての縦線を反復する |
RowOrColum.Both | 全ての罫線を反復する(先に横線、そして縦線) |
RangePosition
を利用して反復の対象範囲を指定します。- 反復された罫線を処理するためのコールバック関数です。この関数の定義は以下の通りです。
void IterateBorderHandler(int row, int col, int span, RangeBorderStyle style)
- row は罫線がワークシートにある横方向の座標です。値は0からです。
- col は罫線がワークシートにある縦方向の座標です。値は0からです。
- span はその罫線の後に存在する同じスタイルの罫線の数です。値は1からです。
- style は罫線のスタイルオブジェクトです。
例:ワークシートにあるすべての罫線を取得する
ワークシートに設定された罫線は以下の通りです。
反復のソースコードは以下の通りです。
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