VB.NET EXCEL読込 データテーブル

こんにちは、ひろにもです。

VB.NETのプログラムを作成していると、EXCELデータの読込みをすることが、よくあるので1つ紹介していきます。

VB.NET EXCEL読込

Excelの情報をDatatableに格納する方法を紹介します。共通関数化しておくと様々な場面で使えるので便利です。

私は、Excelのデータをインポートするマスタメンテナンス画面を作ることが多いのですが、その時に使ってます。

インポートする必要があるもの、忘れないようにしましょう。

Imports System.Data.OleDb

 

EXCELのバージョンは、2016で実行しています。

呼び出し先の関数を作成しました。ExcelのデータをDatatableに変換する関数です。

''' <summary>
''' Excel→datatable
''' </summary>
''' <param name="p_fileNm">ファイルパス</param>
''' <param name="p_sheetNm">シート名</param>
''' <returns>データテーブル</returns>
''' <remarks>EXCEL情報をDataTableに変換する</remarks>
Public Function excelToDt(ByVal p_fileNm As String, Optional ByVal p_sheetNm As String = "Sheet1") As DataTable

    Dim con As New OleDbConnection()
    Dim cmd As New OleDbCommand()
    Dim da As New OleDbDataAdapter()

    Try

        excelToDt = New DataTable()

       con.ConnectionString =
            "Provider=Microsoft.ACE.OLEDB.12.0; " &
            "Data Source=" & p_fileNm & ";" & "Extended Properties=""Excel 12.0;HDR=YES;"""

        ' コネクションの設定
        cmd.Connection = con

        ' SQL文の設定
        cmd.CommandText = "SELECT * FROM [" & p_sheetNm & "$] "

        ' SELECTコマンドの設定 
        da.SelectCommand = cmd

        ' データを取得する 
        da.Fill(excelToDt)

    Catch ex As Exception
        Throw
    Finally
        con.Dispose()
        cmd.Dispose()
        da.Dispose()
    End Try

End Function

 

con.ConnectionString =
"Provider=Microsoft.ACE.OLEDB.12.0; " &
"Data Source=" & p_fileNm & ";" & "Extended Properties=""Excel 12.0;HDR=YES;"""

少し解説をすると、HDR=YESのところで、EXCELのヘッダーありを指定しています。

EXCELのバージョンによって、Microsoft.ACE.OLEDB.の部分の数字が変化します。今回はEXCEL2016です。

cmd.CommandText = "SELECT * FROM [" & p_sheetNm & "$] "

このSQL文で、EXCELデータの中から取得する情報を選択できます。今回は、指定したシートの全件を取得しています。

SQL文がわかれば、EXCELのデータからほしいデータのみ抽出することができます。

 

最後に呼び出し元を記載しておきます。

Dim dt As DataTable = excelToDt("D:\hironimo.xlsx", "Sheet1")

 

まとめ

今回のコードは、コピーしたら使用できると思うので、ボタンイベントなどに張り付けて使用してみてください。

EXCELの抽出ができると、業務の幅が広がるので、おすすめの技術です。

EXCELからDatatableの変換をしたあとに、DataGridViewに表示するなどいろいろ広がっていくので是非使いましょう。

 

おすすめの記事