HOME >> Tips >> Microsoft.NET >> コードサンプル

ClosedXML を使って Excel ファイルを作成する方法

 
文書番号:20207




OpenXML 形式で Excel ファイルを作成する」 では 「Open XML SDK 2.0 for Microsoft Office」 を使用して Excel ファイルを作成する方法を記載しましたがこの方法では結構大変です。

この「Open XML SDK 2.0 for Microsoft Office」を包括して直感的にしようできるようにしたものに「ClosedXML」があります。
今回はこれを使って Excel ファイルを出力します。

まず、NuGet でソリューションに ClosedXML パッケージをインストールしておきます。
NuGet パッケージマネージャでパッケージをインストールする」 に NuGet でパッケージをインストールする方法を記載していますので参考にしてください。

【ClosedXML で Excel ファイルを作成する】

    
    Private Sub CreateExcel()
    
        ' ワークブックを作成
        Dim book As New ClosedXML.Excel.XLWorkbook
    
        ' ワークシートを作成し、シートを取得
        Dim sheet As ClosedXML.Excel.IXLWorksheet = book.Worksheets.Add("サンプル")
    
        ' 名前でセルを指定して値を挿入
        sheet.Cell("A1").Value = "test1"
        ' 行列番号でセルを指定して値を挿入
        sheet.Cell(2, 1).Value = 3
    
    
        ' ファイルに保存
        book.SaveAs("c:\temp\sample.xlsx")
    
    End Sub
    

【その他の操作】

    
        '行番号を指定して「行」を取得する(index は「1」から)
        Dim row As ClosedXML.Excel.IXLRow = sheet.Row(1)
    
        'セル番号を指定して値を挿入(index は「1」から)
        row.Cell(1).Value = "コード"
        row.Cell(2).Value = "名前"
        'セルの名前を指定して値を挿入
        row.Cell("C").Value = "所属"
        row.Cell("D").Value = "入社日"
        row.Cell("E").Value = "売上"
    
        '範囲を指定して複数の行を取得(2行目~10行目を指定)
        Dim rows As ClosedXML.Excel.IXLRows = sheet.Rows(2, 10)
    
        Dim r As New Random
    
        '1行ずつ処理する
        For Each row In rows
            'セルに値を挿入
            row.Cell(1).Value = ""
            row.Cell(2).Value = "山田 太郎"
            row.Cell(3).Value = ""
            row.Cell(4).Value = Now
            row.Cell(5).Value = r.Next(100000, 5000000)
    
            'セルに日付書式を設定
            row.Cell(4).Style.DateFormat.Format = "yyyy/MM/dd"
    
            'セルに数値書式を設定
            row.Cell(5).Style.NumberFormat.Format = "#,##0"
    
            'セルの横位置・縦位置を設定
            row.Cell(5).Style.Alignment.Horizontal = ClosedXML.Excel.XLAlignmentHorizontalValues.Right
            row.Cell(5).Style.Alignment.Vertical = ClosedXML.Excel.XLAlignmentVerticalValues.Center
    
        Next
    
        '指定した列をデータに合わせてリサイズ
        sheet.Columns(4).AdjustToContents()
    
        '指定した列から指定した列までをデータに合わせてリサイズ(1列目~5列目までを指定)
        sheet.Columns(1, 5).AdjustToContents()
    
        '範囲を指定してテーブルを作り、テーマを設定する 表の左上(1行1列)~右下(10行5列)を指定
        sheet.Range(1, 1, 10, 5).CreateTable.Theme = ClosedXML.Excel.XLTableTheme.TableStyleDark1
    
    
        'テキストを45度回転する
        sheet.Cell(1, 1).Style.Alignment.TextRotation = 45
    
        '列の幅を任意のサイズに指定する
        sheet.Column(1).Width = 8
    
【参考情報】

[nuget] ClosedXML
https://www.nuget.org/packages/ClosedXML