下図のような表を作成します。
ワークブックの作成
Dim wb = New XLWorkbook
ワークシートの追加
Dim ws = wb.Worksheets.Add("日本の塔")
テキストの追加
'表タイトル
ws.Cell("B2").Value = "日本の塔"
'名称
Dim fieldTitle_name As String = "名称"
ws.Cell("B3").Value = fieldTitle_name
ws.Cell("B4").Value = "東京タワー(日本電波塔)"
ws.Cell("B5").Value = "東京スカイツリー"
ws.Cell("B6").SetValue("明石海峡大橋(主塔)") '値設定の別のやり方
'所在地
Dim fieldTitle_location As String = "所在地"
ws.Cell("C3").Value = fieldTitle_location
ws.Cell("C4").Value = "東京都港区芝公園"
ws.Cell("C5").Value = "東京都墨田区押上一丁目"
ws.Cell("C6").SetValue("淡路市 - 神戸市間") '値設定の別のやり方
ブール値、日付、数値の追加
'電波塔か?(ブール値)
Dim fieldTitle_isRadioTower As String = "電波塔"
ws.Cell("D3").Value = fieldTitle_isRadioTower
ws.Cell("D4").Value = True
ws.Cell("D5").Value = True
ws.Cell("D6").SetValue(False) '値設定の別のやり方
'竣工・開通日(日付)
Dim fieldTitle_completionDate As String = "竣工・開通日"
ws.Cell("E3").Value = fieldTitle_completionDate
ws.Cell("E4").Value = New DateTime(1958, 12, 23)
ws.Cell("E5").Value = New DateTime(2012, 2, 29)
ws.Cell("E6").SetValue(New DateTime(1998, 4, 5)) '値設定の別のやり方
'高さ(数値)
Dim fieldTitle_height As String = "高さ"
ws.Cell("F3").Value = fieldTitle_height
ws.Cell("F4").Value = 333
ws.Cell("F5").Value = 634
ws.Cell("F6").SetValue(298.3) '値設定の別のやり方
範囲の指定
'ワークシートから指定
Dim rngTable = ws.Range("B2:F6")
'他の範囲から指定
Dim rngDates = rngTable.Range("D3:D5") 'アドレスは rngTable に対する相対位置(ワークシートに対する位置ではない)
Dim rngNumbers = rngTable.Range("E3:E5") 'アドレスは rngTable に対する相対位置(ワークシートに対する位置ではない)
日付と数字の書式設定
'OpenXML の定義済みフォーマット(d-mmm-yy)。 'rngDates.Style.NumberFormat.NumberFormatId = 15 'ユーザー定義の書式設定 rngDates.Style.NumberFormat.Format = "yyyy年MM月dd日" rngNumbers.Style.NumberFormat.Format = "#,##0.0 ""m"""
表タイトルのセルの書式を一度に設定
rngTable.FirstCell().Style _
.Font.SetBold() _
.Fill.SetBackgroundColor(XLColor.FromArgb(191,191,191)) _
.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center)
表タイトルのセルを結合
rngTable.FirstRow().Merge() 'rngTable.Range("A1:E1").Merge() または rngTable.Row(1).Merge() でもOK。
ヘッダー(列タイトル)の書式
Dim rngHeaders = rngTable.Range("A2:E2") 'アドレスは rngTable に対する相対位置(ワークシートに対する位置ではない)
rngHeaders.Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center
rngHeaders.Style.Font.Bold = True
rngHeaders.Style.Font.FontColor = XLColor.DarkBlue
rngHeaders.Style.Fill.BackgroundColor = XLColor.Aqua
データ部分のテーブルを作成
Dim rngData = ws.Range("B3:F6")
Dim excelTable = rngData.CreateTable
'シート上にテーブルを作成したくないが、範囲をテーブルとして扱いたい場合は rngData.AsTable を使う。
'「合計」用の行を追加
excelTable.ShowTotalsRow = true
'「高さ(メートル) 」フィールドの平均を計算
'列の名前を使用して目的のセルを操作している点に注目
excelTable.Field(fieldTitle_height).TotalsRowFunction = XLTotalsRowFunction.Average
'「合計」用の行の「竣工・開通日」フィールドにラベルを入力
excelTable.Field(fieldTitle_completionDate).TotalsRowLabel = "平均:"
excelTable.Field(fieldTitle_completionDate).TotalsCell.Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Right) '右寄せ
太い罫線を追加
'シートのコンテンツに太い罫線を追加 ws.RangeUsed().Style.Border.OutsideBorder = XLBorderStyleValues.Thick 'それぞれの辺の罫線を指定する場合 'contents.FirstColumn().Style.Border.LeftBorder = XLBorderStyleValues.Thick 'contents.LastColumn().Style.Border.RightBorder = XLBorderStyleValues.Thick 'contents.FirstRow().Style.Border.TopBorder = XLBorderStyleValues.Thick 'contents.LastRow().Style.Border.BottomBorder = XLBorderStyleValues.Thick
コンテンツに合わせて列幅を調整
'コンテンツが日本語の場合は日本語フォントにしておかないと AdjustToContents が正しく動作しない
ws.Style.Font.FontName = "游ゴシック";
ws.Columns().AdjustToContents
'次のようにして列範囲を指定することもできる
'ws.Columns(2, 6).AdjustToContents または ws.Columns("2-6").AdjustToContents
ワークブックを保存
wb.SaveAs("D:\test\TowersInJapan.xlsx")

