【VB.NET】ClosedXML:基本操作

MEMO
  • この記事は GitHub - ClosedXML - Wiki を参考に書かせていただいたものですが、C# から VB.NET への書き換えをし、英語から日本語へ翻訳しただけでなく、元記事の構成・コード・コメント等を変更している場合もありますのでご了承ください。
  • 現在 ClosedXML のメンテナンスをご担当されている Francois Botha 様からの掲載許可もいただいてます。
  • この記事のコードサンプルについては、Imports ClosedXML.Excel が宣言されていることを前提としています。
  • ClosedXML の作成者について:Francois Botha, Aleksei Pankratev, Manuel de Leon, Amir Ghezelbash
  • ClosedXML のライセンスについて:GitHub - ClosedXML - MIT License

ここでは基本的な処理を簡単に紹介しています。

ワークブックとワークシート

新規ワークブックの作成と保存

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)

 

「【VB.NET】ClosedXML の使い方」の一覧を表示

コメントの投稿

avatar
  購読する  
通知を受け取る対象