ここでは基本的な処理を簡単に紹介しています。
ワークブックとワークシート
新規ワークブックの作成と保存
Dim workbook = New XLWorkbook 'ワークブックを保存するには最低1つのシートが必要 workbook.AddWorksheet("Sheet 1") workbook.SaveAs("D:\test\NewWorkbook.xlsx")
既存のワークブックを開く
Dim workbook = New XLWorkbook("D:\test\NewWorkbook.xls") 'ワークブックを追加 workbook.AddWorksheet("New Sheet") workbook.SaveAs("D:\test\NewWorkbook.xlsx")
ワークシートの追加
Dim ws As IXLWorksheet = workbook.AddWorksheet("New Worksheet")
既存のワークシートの取得
Dim ws1 As IXLWorksheet = workbook.Worksheet("Sheet 1") Dim ws2 As IXLWorksheet = workbook.Worksheet(3)
セルの操作
セルに値を設定
ws.Cell(1, 1).Value = "Hello, world!" ws.Cell("A2").SetValue("Hello, world!") ws.Cell("A3").SetValue("Hello, world!").CellBelow.SetValue("Hello, world!").CellRight.SetValue("Hello, world!")
セルに式を設定
cell.FormulaA1 = "=A2*B2" cell2.FormulaA1 = "=""合計 "" & SUM(A1:A2)"
セルの値の取得
Dim r1 = ws.Cell("C1").Value Dim r2 = ws.Cell("C2").GetString Dim r3 = ws.Cell("C3").GetBoolean Dim r4 = ws.Cell("C4").GetDateTime
セルをアクティブにする
ws.Cell("B2").SetActive
削除・クリア
range.Delete
range.Clear
2つのセルから矩形範囲を取得する
Dim firstDataCell = ws.Cell("B4") 'ws.FirstCellUsed Dim lastDataCell = ws.LastCellUsed Dim rngData = ws.Range(firstDataCell.Address, lastDataCell.Address)
セルや範囲を取得・選択する
ws.Cell("B2").Select ws.Range("D2:E2").Select ws.Ranges("C3, D4:E5").Select ws.Range(4, 1, 4, 2).Select '処理速度の面ではおすすめ
特定の範囲のセルを1つずつ処理する
'指定範囲のセルを1つずつ処理 Dim rng = ws.Range("E4:F6") For Each cell in rng.Cells cell.Value = "(^_^)" Next
セルの書式
セルの前景色(文字色)の変更
cell.Style.Font.FontColor = XLColor.Red
セルの背景色の変更
cell.Style.Fill.BackgroundColor = XLColor.Yellow
ボールド
cell.Style.Font.Bold = True
フォントサイズ
cell.Style.Font.FontSize = 15
フォント名
cell.Style.Font.FontName = "Century"
リッチテキスト
For Each richText In cell.RichText If richText.FontColor = XLColor.Red Then End If Next
セルのデータ型の変更
cell.DataType = XLCellValues.Text
テキストの表示形式の変更
cell.Style.DateFormat.Format = "yyyy/MM/dd"
罫線
rng.Style.Border.OutsideBorder = XLBorderStyleValues.Double rng.Style.Border.OutsideBorderColor = XLColor.Brown rng.Style.Border.InsideBorder = XLBorderStyleValues.Thin rng.Style.Border.InsideBorderColor = XLColor.Green
行と列
列幅の設定
'複数の列幅の設定 ws.Columns("A,G,I").Width = 3 'コンテンツに合わせて列幅を調整 ws.Style.Font.FontName = "游ゴシック"; ws.Columns.AdjustToContents 'コンテンツが日本語の場合は日本語フォントにしておかないと AdjustToContents が正しく動作しない
行・列の挿入
ws.Column(1).InsertColumnsAfter(1) ws.Range("B2:B4").InsertRowsAbove(2)
行・列の削除
range.Row(1).Delete range.Column(1).Delete
行・列・セルのインデックスは1ベース
VBA と同じことですが、ClosedXML でも行・列・セルのインデックスは1から開始します。
Dim val = ws.Row(1).RowUsed.Cell(1).GetString
.Property = value と .SetProperty(value) の使い分け
Excel VBA では .Property = value というスタイルがお馴染みだと思います。
cell.Value = 3
そのスタイルはもちろん ClosedXML でも使えますが、それに加えて(多くの場合)ClosedXML には .SetProperty(value) というスタイルも用意されています。
.SetProperty(value) というスタイルは、複数のプロパティの設定を一度に(一行で)行うのに便利です。
cell.SetValue(3) _ .Style.Fill.SetBackgroundColor(XLColor.Yellow) _ .Border.SetOutsideBorder(XLBorderStyleValues.Thick)