下図のような表を作成します。
ワークブックの作成
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")