ADO.NETでExcelファイルを読込む [VB.NET]

Visual Basic.NET ADO.NETデータベースプログラミング

接続文字列にExcelファイルのパス

DataAdapterオブジェクトのFillメソッドを使って、Excelファイルを読み込みます。接続文字列にExcelファイルのパス、SQL文のFROM句にシート名、WHERE句で行を絞り込めば、必要なデータのみ取得できます。

DataAdapter.FillでExcelファイルを読込む

VB.NET(OleDb)版

Excelファイルの郵便番号簿.xls(シート名は、デフォルトの"Sheet1")は、プロジェクトフォルダ下のbinフォルダに置きます。

削除区分 郵便番号 都道府県名 市区町村名 町域名
100-0102 東京都 大島大島町 岡田
100-0211 東京都 大島大島町 差木地
100-0103 東京都 大島大島町 泉津
100-0104 東京都 大島大島町 野増
100-0212 東京都 大島大島町 波浮港
100-0101 東京都 大島大島町 元町
104-0044 東京都 中央区 明石町
104-0042 東京都 中央区 入船
104-0054 東京都 中央区 勝どき
104-0031 東京都 中央区 京橋
104-0061 東京都 中央区 銀座
102-0072 東京都 千代田区 飯田橋
102-0082 東京都 千代田区 一番町
101-0032 東京都 千代田区 岩本町
101-0047 東京都 千代田区 内神田
100-0011 東京都 千代田区 内幸町
100-0004 東京都 千代田区 大手町
101-0044 東京都 千代田区 鍛冶町
101-0029 東京都 千代田区 神田相生町
101-0063 東京都 千代田区 神田淡路町
実行例
コントロール プロパティ 設定値
TxtYubinBango BorderStyle Fixed3D
BtnSelect Text 検索
LblKenmei BorderStyle FixedSingle
LblShicyosonMei BorderStyle FixedSingle
LblChoMei BorderStyle FixedSingle

サンプルプログラム

ソースリストの枠内をクリックすると全選択できます。

Imports System.Data.OleDb

Public Class YBN
    Public Const BANGO As Integer = 1
    Public Const TODOUFUKEN As Integer = 2
    Public Const SHICHOSON As Integer = 3
    Public Const CHOIKI As Integer = 4
End Class

Public Class FormExcelRead
     Inherits System.Windows.Forms.Form

#Region " Windows フォーム デザイナで生成されたコード "
    ' 自動生成部分省略
#End Region

    '----------------------------------------------------------------
    ' 検索ボタン押下処理:エクセルファイルから該当行を取得し表示する
    '----------------------------------------------------------------
    Private Sub BtnSelect_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles BtnSelect.Click

        Dim con As New OleDbConnection()
        Dim cmd As New OleDbCommand()
        Dim da As New OleDbDataAdapter()
        Dim ds As DataSet = New DataSet()
        Dim dt As New DataTable()

        Try
            ' DB接続文字列の設定
            con.ConnectionString = _
                "Provider=Microsoft.Jet.OLEDB.4.0; " & _
                "Data Source=" & _
                Application.StartupPath & "\郵便番号簿.xls;" & _
                "Extended Properties=""Excel 8.0;HDR=YES;"""

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

            ' SQL文の設定
            ' シート名は、デフォルトの"Sheet1"のまま使っています
            cmd.CommandText = "SELECT * FROM [Sheet1$] " + _
                "WHERE 郵便番号 = @bango"

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

            ' SQL文パラメータの設定
            cmd.Parameters.Add("@bango", OleDbType.Char, 8)
            cmd.Parameters("@bango").Value = _
                Me.TxtYubinBango.Text

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

            ' 取得レコード数のチェック
            If dt.Rows.Count = 1 Then
                Me.LblKenmei.Text = _
                   CStr(dt.Rows(0).Item(YBN.TODOUFUKEN))
                Me.LblShicyosonMei.Text = _
                   CStr(dt.Rows(0).Item(YBN.SHICHOSON))
                Me.LblChoMei.Text = _
                   CStr(dt.Rows(0).Item(YBN.CHOIKI))

            ElseIf dt.Rows.Count = 0 Then
                ' 行データがなかった時の処理
                MessageBox.Show _
                    ("郵便番号簿にデータなし", "エラー")
                Me.LblKenmei.Text = ""
                Me.LblShicyosonMei.Text = ""
                Me.LblChoMei.Text = ""
                Me.TxtYubinBango.Focus()

            Else
                ' 行データが重複していた時の処理
                MessageBox.Show _
                    ("同一郵便番号が2行以上あり", "エラー")
            End If

        Catch ex As Exception
            ' 例外が発生した時の処理
            MessageBox.Show(ex.ToString, "例外発生")

      End Try

    End Sub

End Class