【C#×Excel】ClosedXMLの基本操作を徹底網羅!
ClosedXMLの操作を網羅的にまとめました。
目次から知りたい情報へ飛んでください。
公式ドキュメントは こちら のサイト(英語)で 確認できます
準備(usingの記述)
ClosedXMLを使うために書かなければいけない おまじない があります。
using ClosedXML.Excel; // ClosedXMLを使うためのおまじない
using ClosedXML.Excel.Drawings; // ClosedXMLを使うためのおまじない
おまじない を書く場所は プログラムの頭です。
※ NuGet による ClosedXMLライブラリ が追加してあることが前提です。
ライブラリの追加については こちら の記事を参考にしてください。
ClosedXMLライブラリ を追加してない状態で おまじないを書いたらエラーになります。
ブックを開く
※ 開くといっても エクセルが起動する訳ではありません。バックグラウンドで開いて(読み込んで)操作できるようにするよ!みたいなイメージです。
※ ブックを開くコードを書いても、保存するコードを書かなければ 保存 されることはありません。
using (var wb = new XLWorkbook(@"C:\新しいフォルダー\エクセルブック.xlsx")) {
// ここに処理を書いていきます
}
ブックを作成
※ ブックを作成といっても エクセルが起動する訳ではありません。バックグラウンドで作成して操作できるようにするよ!みたいなイメージです。
※ ブック作成のコードを書いても、保存するコードを書かなければパソコン上にブックが作成されることはありません。
using (var wb = new XLWorkbook()) {
// ここに処理を書いていきます
}
上書き保存
wb.Save();
の部分が上書き保存するコードです
using (var wb = new XLWorkbook(@"C:\新しいフォルダー\エクセルブック.xlsx")) {
// ここに処理を書いていきます
wb.Save(); // 上書き保存
}
名前を付けて保存
wb.SaveAs(@"C:\新しいフォルダー\エクセルブック_保存.xlsx");
の部分が名前を付けて保存するコードです
既存ブックを開いて別名で保存
using (var wb = new XLWorkbook(@"C:\新しいフォルダー\エクセルブック.xlsx")) {
// ここに処理を書いていきます
wb.SaveAs(@"C:\新しいフォルダー\エクセルブック_保存.xlsx"); // 名前を付けて保存
}
新規ブックを作成して名前を付けて保存
using (var wb = new XLWorkbook()) {
// ここに処理を書いていきます
wb.SaveAs(@"C:\新しいフォルダー\エクセルブック_保存.xlsx"); // 名前を付けて保存
}
シートを追加
wb.Worksheets.Add("Sheet1");
の部分がシートを追加するコードです
using (var wb = new XLWorkbook()) {
//ワークシートの追加
wb.Worksheets.Add("Sheet1");
// 名前を付けて保存
wb.SaveAs(@"C:\新しいフォルダー\エクセルブック_保存.xlsx");
}
シートをアクティブ化
wb.Worksheet(setSheetName).SetTabActive();
の部分がシートを選択するコードです
注意点としてSetTabActive();
で シートをアクティブにした際、複数のシートが選択状態になる場合があります
事前にアクティブなシートを確認しておき、指定したシートをアクティブにした後に、元々アクティブだったシートの選択を解除することで、シートの2重選択を防止しています。
using (var wb = new XLWorkbook()) {
// アクティブにしたいシート名
var setSheetName = "Sheet3";
// 現在アクティブなシートを調べる
var sheet = wb.Worksheets.First(_ => _.TabActive).Worksheet;
if (sheet != wb.Worksheet(setSheetName)) {
//指定したシート名のシートをActiveにする
wb.Worksheet(setSheetName).SetTabActive();
sheet.TabSelected = false;
}
// 名前を付けて保存
wb.SaveAs(@"C:\新しいフォルダー\エクセルブック_保存.xlsx");
}
最終行の取得
lastRow
には 行そのもの(オブジェクト)が入ります
lastRowNumber
には 行番号が入ります
using (var wb = new XLWorkbook()) {
// データをいくつか追加します(例として)
wb.Worksheet("sheet1").Cell("A1").Value = "データ1";
wb.Worksheet("sheet1").Cell("A2").Value = "データ2";
wb.Worksheet("sheet1").Cell("A3").Value = "データ3"; // この行が最終行になります。
// 最終行を使用している行を取得します。
var lastRow = worksheet.LastRowUsed();
// 最終行の行番号を取得します。この場合、lastRowNumberには、3が入ります
int lastRowNumber = lastRow.RowNumber();
// 取得した最終行を利用したい場合のコードをここに記述します。
// 例:最終行の次の行に値を設定する。
wb.Worksheet("sheet1").Cell(lastRowNumber + 1, 1).Value = "次のデータ";
// 名前を付けて保存
wb.SaveAs(@"C:\新しいフォルダー\エクセルブック_保存.xlsx");
}
最終列の取得
lastColumn
には 列そのもの(オブジェクト)が入ります
lastColumnNumber
には 列番号が入ります
using (var wb = new XLWorkbook()) {
// 例としてデータを追加します(例として)
wb.Worksheet("sheet1").Cell("A1").Value = "データ1";
wb.Worksheet("sheet1").Cell("B1").Value = "データ2";
wb.Worksheet("sheet1").Cell("C1").Value = "データ3"; // この列が最終列になります。
// 最終列を使用している列を取得します
var lastColumn = worksheet.LastColumnUsed();
// 最終列の列番号を取得します。この場合、lastColumnNumberには、3が入ります
int lastColumnNumber = lastColumn.ColumnNumber();
// 取得した最終列を利用したい場合のコードをここに記述します。
// 例えば、最終列の次の列に値を設定する。
wb.Worksheet("sheet1").Cell(1, lastColumnNumber + 1).Value = "次のデータ";
// 名前を付けて保存
wb.SaveAs(@"C:\新しいフォルダー\エクセルブック_保存.xlsx");
}
行のコピー
指定されたワークシートの5行目を10行目にコピーします
CopyTo
メソッドはセルの値だけでなく、書式やスタイルもコピーします
既にコピー先の行にデータが存在する場合は、上書きされます
コピー元とコピー先が同じ行の場合は何も変わりません
using (var wb = new XLWorkbook()) {
// コピーしたい行番号を指定
int sourceRowNumber = 5; // 例:5行目をコピーする
// コピー先の行番号を指定
int targetRowNumber = 10; // 例:10行目にコピーする
// 行をコピーする
var sourceRow = wb.Worksheet("sheet1").Row(sourceRowNumber);
var targetRow = wb.Worksheet("sheet1").Row(targetRowNumber);
// 行全体をコピー
sourceRow.CopyTo(targetRow);
// 名前を付けて保存
wb.SaveAs(@"C:\新しいフォルダー\エクセルブック_保存.xlsx");
}
行の挿入
下に行を挿入する
Row(1)
:1行目の
InsertRowsBelow(2)
:下に2行挿入
// 行の挿入(下に)
wb.Worksheet("sheet1").Row(1).InsertRowsBelow(2);
上に行を挿入する
Row(1)
:1行目の
InsertRowsAbove(2)
:上に2行挿入
// 行の挿入(上に)
wb.Worksheet("sheet1").Row(1).InsertRowsAbove(2);
行を削除
Row(10)
:10行目を
Delete()
:削除
// 行の削除
wb.Worksheet("sheet1").Row(10).Delete();
列のコピー
指定されたワークシートの3列目を6列目にコピーします
CopyTo
メソッドを使用して、セルの内容、書式、スタイルを含めてコピーします
既にコピー先の列にデータが存在する場合は、上書きされます
コピー元とコピー先が同じ行の場合は何も変わりません
using (var wb = new XLWorkbook()) {
// コピーしたい列の番号を指定
int sourceColumnNumber = 3; // 例:3列目("C"列)をコピーする
// コピー先の列の番号を指定
int targetColumnNumber = 6; // 例:6列目("F"列)にコピーする
// 列をコピーする
var sourceColumn = wb.Worksheet("sheet1").Column(sourceColumnNumber);
var targetColumn = wb.Worksheet("sheet1").Column(targetColumnNumber);
// 列全体をコピー
sourceColumn.CopyTo(targetColumn);
// 名前を付けて保存
wb.SaveAs(@"C:\新しいフォルダー\エクセルブック_保存.xlsx");
}
列の挿入
前に列を挿入
Column(1)
:1列目の
InsertColumnsBefore(2)
:前(左)に2列挿入
// 列の挿入(前に)
wb.Worksheet("sheet1").Column(1).InsertColumnsBefore(2);
後ろに列を挿入
Column(1)
:1列目の
InsertColumnsAfter(2)
:後(右)に2列挿入
// 列の挿入(後に)
wb.Worksheet("sheet1").Column(1).InsertColumnsAfter(2);
列を削除
Column(10)
:10列目を
Delete()
:削除
// 列の削除
wb.Worksheet("sheet1").Column(10).Delete();
ウィンドウ枠の固定
ウィンドウ枠の固定 を設定する方法です
上から2行目、左から1列目 を固定表示するには↓のように書きます
セル番地 A1:B2 の範囲が固定されることになります
using (var wb = new XLWorkbook(@"C:\新しいフォルダー\エクセルブック.xlsx"))
{
// 例として、上から2行目までと左から1列目までを固定表示にします。
// これは、3行目以降とB列以降がスクロールによって動くのに対して、
// A1:B2 の範囲が固定されることを意味します
wb.Worksheet("sheet1").SheetView.FreezeRows(2);
wb.Worksheet("sheet1").SheetView.FreezeColumns(1);
// ファイルに変更を上書き保存します。
wb.Save();
}
実行するとこんな感じです
ウィンドウ枠の固定
ウィンドウ枠の固定 を解除する方法です
上から0行目、左から0列目 を固定表示、のような書き方で解除できます
using (var wb = new XLWorkbook(@"C:\新しいフォルダー\エクセルブック.xlsx"))
{
// ウィンドウ枠の固定を解除
wb.Worksheet("sheet1").SheetView.FreezeRows(0);
wb.Worksheet("sheet1").SheetView.FreezeColumns(0);
// ファイルに変更を上書き保存します。
wb.Save();
}
セルに値を書込み
C5セルに値「あいうえお」の書き込み(R1C1形式でセル指定)
// 値の書き込み(R1C1形式でセル指定)
wb.Worksheet("sheet1").Cell(5,3).Value = "あいうえお";
C5セルに値「あいうえお」の書き込み(A1形式でセル指定)
// 値の書き込み(A1形式でセル指定)
wb.Worksheet("sheet1").Cell("C5").Value = "あいうえお";
セルに数式を書込み
C5セルに数式「=1+1」の書き込み(R1C1形式でセル指定)
// 値の書き込み(R1C1形式でセル指定)
wb.Worksheet("sheet1").Cell(5,3).FormulaA1 = "=1+1";
C5セルに数式「=1+1」の書き込み(A1形式でセル指定)
// 値の書き込み(A1形式でセル指定)
wb.Worksheet("sheet1").Cell("C5").FormulaA1 = "=1+1";
ClosedXML 数式関連プロパティ一覧表
プロパティ名 | 説明 | 使用例 |
---|---|---|
FormulaA1 | A1形式でセルに数式を設定するときに使用します。 | wb.Worksheet("sheet1").Cell("C5").FormulaA1 = "SUM(A1:A10)"; |
FormulaR1C1 | R1C1形式でセルに数式を設定するときに使用します。 | wb.Worksheet("sheet1").Cell("C5").FormulaR1C1 = "SUM(R1C1:R10C1)"; |
Formula | セルに数式を設定するときに使用しますが、A1形式が一般的です。 | wb.Worksheet("sheet1").Cell("C5").Formula = "=SUM(A1:A10)"; |
SetFormulaA1 | メソッドチェーン中でA1形式の数式をセルに設定するために使用します。 | wb.Worksheet("sheet1").Cell("C5").SetFormulaA1("SUM(A1:A10)"); |
SetFormulaR1C1 | メソッドチェーン中でR1C1形式の数式をセルに設定するために使用します。 | wb.Worksheet("sheet1").Cell("C5").SetFormulaR1C1("SUM(R1C1:R10C1)"); |
数式をセルに設定する際には、FormulaA1
や FormulaR1C1
プロパティを使用します
FormulaA1
はExcelで一般的に使用されるA1参照スタイル(列はアルファベット、行は数字で表される)で数式を設定します
FormulaR1C1
はR1C1参照スタイル(列と行が両方とも数字で表される)で数式を設定します
SetFormulaA1
やSetFormulaR1C1
はメソッドチェーニングに適している点が特徴で、複数のスタイル設定を一行で行いたい場合に便利ですこれらのメソッドを使用すると、プロパティを設定する代わりにメソッドとして数式をセルに適用することができます。
例えば、以下のコードはcell
の数式をメソッドチェーンで設定しています。
wb.Worksheet("sheet1").SetFormulaA1("SUM(A1:A10)").Style.Font.Bold = true;
このコードはセルに数式を設定し、そのセルのフォントを太字に設定しています
オブジェクトのメソッドを連続して呼び出すプログラミングのパターン。この技法は「流れるようなインターフェース」(fluent interface) とも呼ばれ、コードの可読性を向上させることができる。
メソッドチェーニングを実現するには、各メソッドが最後にそのオブジェクト自身 (this
) を返すように実装されている必要があります。このために、メソッドはそのオブジェクトの型を返す必要があります。
複数セルに書込み
E1~E100セルに値「2」をセット
//E1~E100セルにまとめて値をセット
wb.Worksheet("sheet1").Range(1, 5, 100, 5).Value = 2;
E1~E100セルに数式「=1+1」をセット
値を文字列として読み出し
C5セルの値を文字列として取得(R1C1形式でセル指定)
// 文字列として取得(R1C1形式でセル指定)
var C5_Value = wb.Worksheet("sheet1").Cell(5, 3).Value.ToString();
C5セルの値を文字列として取得(A1形式でセル指定)
// 文字列として取得(A1形式でセル指定)
var C5_Value = wb.Worksheet("sheet1").Cell("C5").Value.ToString();
セルから2次元配列へ読み込み
エクセルから読み出して2次元配列へ読み込むサンプルコードです
読み込む範囲はRangeUsed()
メソッドを使って、使用されている範囲を取得しています
using (var wb = new XLWorkbook(@"C:\新しいフォルダー\エクセルブック.xlsx"))
{
// 使用されている範囲を取得
var range = wb.Worksheet("sheet1").RangeUsed();
// 2次元配列を定義します。
var array = new object[range.RowCount(), range.ColumnCount()];
// Excelの範囲から2次元配列へデータを読み込みます。
for (int i = 1; i <= range.RowCount(); i++)
{
for (int j = 1; j <= range.ColumnCount(); j++)
{
array[i - 1, j - 1] = range.Cell(i, j).Value;
}
}
// 'using'ブロックの終わりでworkbookは自動的に閉じられます。保存はされません。
}
2次元配列からセルへ書き込み
2次元配列をエクセルに書き込むサンプルコードです
.Cell(startCellAddress).CellBelow(i).CellRight(j)
は、指定されたスタートセル(startCellAddress
)を基点として、そのセルから下に i
行、右に j
列 移動した位置にあるセルを参照しています。
具体的には:
.Cell(startCellAddress)
:startCellAddress
で指定されたアドレスにあるセルを取得します。例えば"A1"
が指定されていれば、A1セルを指します。.CellBelow(i)
:基点となるセルから下方向にi
行移動したセルを参照します。例えば、基点が A1 でi
が 1 なら、A2セルを指します。.CellRight(j)
:さらに、そのセルから右方向にj
列移動したセルを参照します。例えば、基点が A1 でj
が 1 なら、B1セルを指します。
// 2次元配列のデータを準備
var data = new[,]
{
{ "ヘッダー1", "ヘッダー2" },
{ "データ1", "データ2" }
};
using (var wb = new XLWorkbook(@"C:\新しいフォルダー\エクセルブック.xlsx"))
{
// 開始セルのアドレスを指定します。ここでは "A1" から始めます。
var startCell = ws.Cell("A1");
// 配列のデータをワークシートに書き込みます。
for (int i = 0; i < data.GetLength(0); i++)
{
for (int j = 0; j < data.GetLength(1); j++)
{
// 直接 wb.Worksheet("sheet1") を使って値を設定します。
wb.Worksheet("sheet1").Cell(startCellAddress).CellBelow(i).CellRight(j).Value = data[i, j];
}
}
// ファイルに変更を上書き保存します。
wb.Save();
}
// 'using' ステートメントの外でwbオブジェクトは自動的に破棄されます。
セルの背景色
C5セルを塗りつぶし(色:XLColor.Aqua
)
// C5セルを塗りつぶし(R1C1形式でセル指定)
wb.Worksheet("sheet1").Cell(5, 3).Style.Fill.BackgroundColor = XLColor.Aqua;
C5セルを塗りつぶし(色:XLColor.Aqua
)
// C5セルを塗りつぶし(A1形式でセル指定)
wb.Worksheet("sheet1").Cell("C5").Style.Fill.BackgroundColor = XLColor.Aqua;
E1~E100セルを塗りつぶし(色:XLColor.LightGreen
)
//E1~E100セルを塗りつぶし(R1C1形式でセル指定)
wb.Worksheet("sheet1").Range(1, 5, 100, 5).Style.Fill.BackgroundColor = XLColor.LightGreen;
カラー一覧表へ ジャンプ
セルの枠線
C5セルの上の枠線を細い線で黒に設定(R1C1形式でセル指定)
// C5セルの上の枠線を細い線で黒に設定(R1C1形式でセル指定)
wb.Worksheet("sheet1").Cell(5, 3).Style.Border.TopBorder = XLBorderStyleValues.Thin; // 枠線のスタイルを設定
wb.Worksheet("sheet1").Cell(5, 3).Style.Border.TopBorderColor = XLColor.Black; // 枠線の色を設定
C5セルの下の枠線を細い線で黒に設定(R1C1形式でセル指定)
// C5セルの下の枠線を細い線で黒に設定(R1C1形式でセル指定)
wb.Worksheet("sheet1").Cell(5, 3).Style.Border.BottomBorder = XLBorderStyleValues.Thin;
wb.Worksheet("sheet1").Cell(5, 3).Style.Border.BottomBorderColor = XLColor.Black;
C5セルの左の枠線を細い線で黒に設定(R1C1形式でセル指定)
// C5セルの左の枠線を細い線で黒に設定(R1C1形式でセル指定)
wb.Worksheet("sheet1").Cell(5, 3).Style.Border.LeftBorder = XLBorderStyleValues.Thin;
wb.Worksheet("sheet1").Cell(5, 3).Style.Border.LeftBorderColor = XLColor.Black;
C5セルの右の枠線を細い線で黒に設定(R1C1形式でセル指定)
// C5セルの右の枠線を細い線で黒に設定(R1C1形式でセル指定)
wb.Worksheet("sheet1").Cell(5, 3).Style.Border.RightBorder = XLBorderStyleValues.Thin;
wb.Worksheet("sheet1").Cell(5, 3).Style.Border.RightBorderColor = XLColor.Black;
C5セルの枠線をすべて細い線で黒に設定(A1形式でセル指定)
// C5セルの枠線をすべて細い線で黒に設定(A1形式でセル指定)
wb.Worksheet("sheet1").Cell("C5").Style.Border.SetOutsideBorder(XLBorderStyleValues.Thin).SetOutsideBorderColor(XLColor.Black);
E1~E100セル範囲の外側の枠線を細い線で黒に設定(R1C1形式で範囲指定)
// E1~E100セル範囲の外側の枠線を細い線で黒に設定(R1C1形式で範囲指定)
wb.Worksheet("sheet1").Range(1, 5, 100, 5).Style.Border.OutsideBorder = XLBorderStyleValues.Thin; // 範囲全体の外側の枠線のスタイルを設定
wb.Worksheet("sheet1").Range(1, 5, 100, 5).Style.Border.OutsideBorderColor = XLColor.Black; // 範囲全体の外側の枠線の色を設定
セルの枠線パラメータ一覧表
スタイルの名称 | XLBorderStyleValues のパラメータ | 説明 |
---|---|---|
無し | None | 枠線なし |
細い実線 | Thin | 細い実線 |
中くらいの実線 | Medium | 中くらいの太さの実線 |
太い実線 | Thick | 太い実線 |
点線 | Dotted | 点線 |
細い点線 | Hair | 非常に細い点線 |
点線(太い) | Dashed | 太い点線 |
二重線 | Double | 二重線 |
細い点線(2種) | DashDot | 1点鎖線(細い点と線が交互に来る) |
中点線(2種) | MediumDashDot | 1点鎖線(中くらいの点と線が交互) |
枠線の位置とプロパティの対応表(サンプルコード付き)
位置 | プロパティ | 説明 | サンプルコード |
---|---|---|---|
上 | TopBorder | 上側の枠線を設定する | wb.Worksheet("sheet1").Cell("C5").Style.Border.TopBorder = XLBorderStyleValues.Thin; |
下 | BottomBorder | 下側の枠線を設定する | wb.Worksheet("sheet1").Cell("C5").Style.Border.BottomBorder = XLBorderStyleValues.Thin; |
左 | LeftBorder | 左側の枠線を設定する | wb.Worksheet("sheet1").Cell("C5").Style.Border.LeftBorder = XLBorderStyleValues.Thin; |
右 | RightBorder | 右側の枠線を設定する | wb.Worksheet("sheet1").Cell("C5").Style.Border.RightBorder = XLBorderStyleValues.Thin; |
外側全体 | OutsideBorder | 範囲の外側の枠線を一括で設定する | wb.Worksheet("sheet1").Range(1, 5, 100, 5).Style.Border.OutsideBorder = XLBorderStyleValues.Thin; |
内側水平 | InsideBorder | 範囲の内側の水平枠線を一括で設定する | wb.Worksheet("sheet1").Range(1, 5, 100, 5).Style.Border.InsideBorder = XLBorderStyleValues.Thin; |
内側垂直 | InsideBorder | 範囲の内側の垂直枠線を一括で設定する | wb.Worksheet("sheet1").Range(1, 5, 100, 5).Style.Border.InsideBorder = XLBorderStyleValues.Thin; |
内側全体 | InsideBorder | 範囲の内側の枠線を一括で設定する | wb.Worksheet("sheet1").Range(1, 5, 100, 5).Style.Border.InsideBorder = XLBorderStyleValues.Thin; |
対角線 | DiagonalBorder | 対角線の枠線を設定する | wb.Worksheet("sheet1").Cell("C5").Style.Border.DiagonalBorder = XLBorderStyleValues.Thin; |
対角線(逆) | DiagonalBorder | 逆方向の対角線の枠線を設定する | wb.Worksheet("sheet1").Cell("C5").Style.Border.DiagonalBorder = XLBorderStyleValues.Thin; |
セルの配置
C5セルの水平方向の配置を中央に設定する場合以下のように書けます
// C5セルの水平方向の配置を中央に設定
wb.Worksheet("sheet1").Cell("C5").Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;
配置オプションの一覧表(サンプルコード付き)
配置オプション | 説明 | サンプルコード |
---|---|---|
水平方向の配置 (設定一覧) | セル内のテキストの水平方向の位置 | wb.Worksheet("sheet1").Cell("C5").Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center; |
垂直方向の配置 (設定一覧) | セル内のテキストの垂直方向の位置 | wb.Worksheet("sheet1").Cell("C5").Style.Alignment.Vertical = XLAlignmentVerticalValues.Center; |
テキストの折り返し | テキストをセル内で折り返す | wb.Worksheet("sheet1").Cell("C5").Style.Alignment.WrapText = true; |
縮小して表示 | テキストを縮小してセルに収める | wb.Worksheet("sheet1").Cell("C5").Style.Alignment.ShrinkToFit = true; |
インデント | テキストのインデントを設定 | wb.Worksheet("sheet1").Cell("C5").Style.Alignment.Indent = 2; |
テキストの回転 | テキストの角度を設定 | wb.Worksheet("sheet1").Cell("C5").Style.Alignment.TextRotation = 45; |
改行 | テキストで改行を行う | wb.Worksheet("sheet1").Cell("C5").Style.Alignment.JustifyLastLine = true; |
水平方向の配置設定一覧
オプション | 説明 | サンプルコード |
---|---|---|
General | デフォルトの配置。内容に基づいて自動的に配置されます。 | wb.Worksheet("sheet1").Cell("C5").Style.Alignment.Horizontal = XLAlignmentHorizontalValues.General; |
Left | テキストを左揃えにします。 | wb.Worksheet("sheet1").Cell("C5").Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Left; |
Center | テキストを中央揃えにします。 | wb.Worksheet("sheet1").Cell("C5").Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center; |
Right | テキストを右揃えにします。 | wb.Worksheet("sheet1").Cell("C5").Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right; |
Fill | セルを埋めるようにテキストを繰り返します。 | wb.Worksheet("sheet1").Cell("C5").Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Fill; |
Justify | テキストを両端揃えにし、単語の間隔を調整します。 | wb.Worksheet("sheet1").Cell("C5").Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Justify; |
CenterContinuous | 中央揃えですが、隣接する空白セルにまたがって中央揃えが継続されます。 | wb.Worksheet("sheet1").Cell("C5").Style.Alignment.Horizontal = XLAlignmentHorizontalValues.CenterContinuous; |
Distributed | テキストを均等に分散させ、両端を揃えます。 | wb.Worksheet("sheet1").Cell("C5").Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Distributed; |
垂直方向の配置設定一覧
オプション | 説明 | サンプルコード |
---|---|---|
Top | テキストを上揃えにします。 | wb.Worksheet("sheet1").Cell("C5").Style.Alignment.Vertical = XLAlignmentVerticalValues.Top; |
Center | テキストを中央揃えにします。 | wb.Worksheet("sheet1").Cell("C5").Style.Alignment.Vertical = XLAlignmentVerticalValues.Center; |
Bottom | テキストを下揃えにします。 | wb.Worksheet("sheet1").Cell("C5").Style.Alignment.Vertical = XLAlignmentVerticalValues.Bottom; |
Justify | テキストをセル内で垂直に均等に分散させます。 | wb.Worksheet("sheet1").Cell("C5").Style.Alignment.Vertical = XLAlignmentVerticalValues.Justify; |
Distributed | テキストとセルの上下の余白を均等に分散させます。 | wb.Worksheet("sheet1").Cell("C5").Style.Alignment.Vertical = XLAlignmentVerticalValues.Distributed; |
セル結合(マージ)
A1からB2までの範囲を結合(マージ)するサンプルコード
.Merge();
で結合(マージ)しています
using (var wb = new XLWorkbook(@"C:\新しいフォルダー\エクセルブック.xlsx"))
{
// A1からB2までの範囲をマージ(例:2x2のセル範囲)
wb.Worksheet("sheet1").Range("A1:B2").Merge();
// 上書き保存
wb.Save();
}
A1からB2までの範囲のセルを結合解除(アンマージ)するサンプルコード
.Unmerge();
で結合解除(アンマージ)しています
using (var wb = new XLWorkbook(@"C:\新しいフォルダー\エクセルブック.xlsx"))
{
// "sheet1" という名前のワークシート内のマージされた範囲を解除
// ここでは例として、A1からB2までの範囲がマージされていると仮定
wb.Worksheet("sheet1").Range("A1:B2").Unmerge();
// 上書き保存
wb.Save();
}
フォントカラー
C5セルの文字色を指定(色:XLColor.Tomato
)
// C5セルの文字色を指定(R1C1形式でセル指定)
wb.Worksheet("sheet1").Cell(5, 3).Style.Font.FontColor = XLColor.Tomato;
C5セルの文字色を指定(色:XLColor.Tomato
)
// C5セルの文字色を指定(A1形式でセル指定)
wb.Worksheet("sheet1").Cell("C5").Style.Font.FontColor = XLColor.Tomato;
E1~E100セルの文字色を指定(色:XLColor.Tomato
)
//E1~E100セルの文字色を指定(R1C1形式でセル指定)
wb.Worksheet("sheet1").Range(1, 5, 100, 5).Style.Font.FontColor = XLColor.Tomato;
カラー一覧表へ ジャンプ
フォントサイズ
C5セルのフォントサイズを変更(サイズ:12
)
// C5セルのフォントサイズを変更(R1C1形式でセル指定)
wb.Worksheet("sheet1").Cell(5, 3).Style.Font.FontSize = 12;
C5セルのフォントサイズを変更(サイズ:12
)
// C5セルのフォントサイズを変更(A1形式でセル指定)
wb.Worksheet("sheet1").Cell("C5").Style.Font.FontSize = 12;
E1~E100セルのフォントサイズを変更(サイズ:12
)
// E1~E100セルのフォントサイズを変更(R1C1形式でセル指定)
wb.Worksheet("sheet1").Range(1, 5, 100, 5).Style.Font.FontSize = 12;
テキストを太字
C5セルのテキストを太字に指定
// C5セルのテキストを太字に指定(R1C1形式でセル指定)
wb.Worksheet("sheet1").Cell(5, 3).Style.Font.Bold = true;
C5セルのテキストを太字に指定
// C5セルのテキストを太字に指定(A1形式でセル指定)
wb.Worksheet("sheet1").Cell("C5").Style.Font.Bold = true;
E1~E100セルのテキストを太字に指定
// E1~E100セルのテキストを太字に指定(R1C1形式でセル指定)
wb.Worksheet("sheet1").Range(1, 5, 100, 5).Style.Font.Bold = true;
テキストをイタリック
C5セルのテキストをイタリックに指定
// C5セルのテキストをイタリックに指定(R1C1形式でセル指定)
wb.Worksheet("sheet1").Cell(5, 3).Style.Font.Italic = true;
C5セルのテキストをイタリックに指定
// C5セルのテキストをイタリックに指定(A1形式でセル指定)
wb.Worksheet("sheet1").Cell("C5").Style.Font.Italic = true;
E1~E100セルのテキストをイタリックに指定
// E1~E100セルのテキストをイタリックに指定(R1C1形式でセル指定)
wb.Worksheet("sheet1").Range(1, 5, 100, 5).Style.Font.Italic = true;
テキストに下線
C5セルのテキストに下線
// C5セルのテキストに下線(R1C1形式でセル指定)
wb.Worksheet("sheet1").Cell(5, 3).Style.Font.Underline = XLFontUnderlineValues.Single;
C5セルのテキストに下線
// C5セルのテキストに下線(A1形式でセル指定)
wb.Worksheet("sheet1").Cell("C5").Style.Font.Underline = XLFontUnderlineValues.Single;
E1~E100セルのテキストに下線
// E1~E100セルのテキストに下線(R1C1形式でセル指定)
wb.Worksheet("sheet1").Range(1, 5, 100, 5).Style.Font.Underline = XLFontUnderlineValues.Single;
画像の貼り付け
PNG画像を貼り付けるサンプルコードです
private void pasteImg() {
// 画像を置く位置を設定(画像の左上角をどのセルに合わせるか)
int row = 1; // 行 番号
int colum = 1; // 列 番号
// 開きたいブックのパスを入れる
using (var wb = new XLWorkbook(@"C:\新しいフォルダー\エクセルブック.xlsx")) {
//ワークシートの設定
IXLWorksheet ws = wb.Worksheet("Sheet1");
// AddPictureメソッドで画像を挿入
IXLPicture image = ws.AddPicture(@"C:\新しいフォルダー\エクセルブック.PNG");
// 画像を目的の場所に移動
image.MoveTo(ws.Cell(row, colum));
// ワークブックを保存(実行ファイルと同じフォルダ)
wb.SaveAs(@"C:\新しいフォルダー\エクセルブック_保存.xlsx");
}
}
目盛線の表示/非表示
目盛線(グリッドライン)の 非表示
// グリッドラインを非表示にする
wb.Worksheet("sheet1").ShowGridLines = false;
目盛線(グリッドライン)の 表示
// グリッドラインを表示する
wb.Worksheet("sheet1").ShowGridLines = true;
カラー設定 一覧表
フォントカラー設定方法へ ジャンプ
セル背景色設定方法へ ジャンプ
色をいくつかピックアップしてサンプル表を作成しました
色の名称 | XLColor プリセット | Color オブジェクト | カラーコード |
---|---|---|---|
ブラック | XLColor.Black | XLColor.FromColor(Color.FromArgb(0, 0, 0)) | XLColor.FromHtml("#000000") |
ホワイト | XLColor.White | XLColor.FromColor(Color.FromArgb(255, 255, 255)) | XLColor.FromHtml("#FFFFFF") |
レッド | XLColor.Red | XLColor.FromColor(Color.FromArgb(255, 0, 0)) | XLColor.FromHtml("#FF0000") |
ブルー | XLColor.Blue | XLColor.FromColor(Color.FromArgb(0, 0, 255)) | XLColor.FromHtml("#0000FF") |
グリーン | XLColor.Green | XLColor.FromColor(Color.FromArgb(0, 128, 0)) | XLColor.FromHtml("#008000") |
イエロー | XLColor.Yellow | XLColor.FromColor(Color.FromArgb(255, 255, 0)) | XLColor.FromHtml("#FFFF00") |
オレンジ | XLColor.Orange | XLColor.FromColor(Color.FromArgb(255, 165, 0)) | XLColor.FromHtml("#FFA500") |
ピンク | XLColor.Pink | XLColor.FromColor(Color.FromArgb(255, 192, 203)) | XLColor.FromHtml("#FFC0CB") |
ダークブルー | XLColor.DarkBlue | XLColor.FromColor(Color.FromArgb(0, 0, 139)) | XLColor.FromHtml("#00008B") |
ライトブルー | XLColor.LightBlue | XLColor.FromColor(Color.FromArgb(173, 216, 230)) | XLColor.FromHtml("#ADD8E6") |
グレー | XLColor.Gray | XLColor.FromColor(Color.FromArgb(128, 128, 128)) | XLColor.FromHtml("#808080") |
ゴールド | XLColor.Gold | XLColor.FromColor(Color.FromArgb(255, 215, 0)) | XLColor.FromHtml("#FFD700") |
パープル | XLColor.Purple | XLColor.FromColor(Color.FromArgb(128, 0, 128)) | XLColor.FromHtml("#800080") |
トマト | XLColor.Tomato | XLColor.FromColor(Color.FromArgb(255, 99, 71)) | XLColor.FromHtml("#FF6347") |
チョコレート | XLColor.Chocolate | XLColor.FromColor(Color.FromArgb(210, 105, 30)) | XLColor.FromHtml("#D2691E") |
XLColor
クラスで直接アクセスできるプリセットの色、System.Drawing.Color
オブジェクトから作成する方法、そしてHTMLカラーコードから作成する方法の3つの異なる設定手法を提供しています。