TSVファイルを読込む [VB.NET]

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

DataAdapterオブジェクトのFillメソッドで読み込み

DataAdapterオブジェクトのFillメソッドを使って、TSV(タブ区切りテキスト)ファイルの全行を読み込み、リストボックスに表示するプログラムを作成します。

csvファイル表示
コントロール プロパティ 設定値
ListBox1 - -
BtnYomikomi Text 読込

Textファイル(ファイル名:syain.csv)のデータは、CSV形式で各データをカンマで区切っています。1行目は列タイトル行で、2行目以降がデータになっています。

"社員コード","社員氏名","社員カナ","部門コード"
"00001","青山太郎","アオヤマタロウ","101"
"00002","鈴木肇","スズキハジメ","101"
"00003","佐々木健一郎","ササキケンイチロウ","102"
"00005","田中和雄","タナカカズオ","101"

schema.iniファイル

プロジェクトファイルフォルダ下のbinフォルダに、schema.iniファイルを置く。

[syainTsv.txt]
ColNameHeader=False
Format=TabDelimited
Col1=社員コード Text
Col2=社員氏名 Text
Col3=社員カナ Text

【schema.iniファイルの補足】

  • 1行目:セクションは、[  と  ] で囲み、 読み込むテキストファイル名を指定
  • 2行目:ColNameHeaderキーを、Trueにするとタイトル行あり、Falseにするとタイトル行なし
  • 3行目:Formatキーに、区切り文字を設定します。区切り文字には、TabDelimited、CSVDelimited、Delimited(<1文字>)が設定できます。
  • 4行目以降:Col1~キー以降に、各フィールドのフィールド名、データ型等を設定します。

TSVファイル 接続文字列

Provider引数は、Microsoft.Jet.OLEDB.4.0を指定

Data Source引数は、Textファイルのパスを指定。開発環境により異なるので、Application.StartupPathで取得

Extended Properties 引数はTextを指定(Extended Properties="Text")

【注意】文字列として " をコーディングするときは "" と二つ連続で記述

サンプルプログラム

Provider引数は、Microsoft.Jet.OLEDB.4.0を指定

Data Source引数は、Textファイルのパスを指定。開発環境により異なるので、Application.StartupPathで取得

Extended Properties 引数にはプロパティが3つあり、";"で区切って指定

  • 1番目:データベースの種類で、テキストファイルの場合には、Textを指定
  • 2番目:最初の行がヘッダー(フィールド名)か否かの指定で、最初の行がヘッダーの場合には、HDR=YES、HDR=NO の場合は、自動的にフィールド名が付けられる
  • 3番目:ファイルのフォマート指定で、CSV形式なら FMT=Delimitedを指定

【注意】文字列として " をコーディングするときは、 "" (2個連続)で記述

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

Imports System.Data.OleDb

Public Class FormTsvTextFile
    Inherits System.Windows.Forms.Form

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

    '---------------------------------------------------------------
    ' 読込ボタンクリック処理:TSVファイルを読込みListBoxに表示
    '---------------------------------------------------------------
    Private Sub BtnYomikomi_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles BtnYomikomi.Click

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

        Try
            ' DB接続文字列の設定
            ' プロジェクトフォルダ下のbinフォルダにtsvファイルを置く
            con.ConnectionString = _
                "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                "Data Source=" & Application.StartupPath & "\;" & _
                "Extended Properties=""Text"""

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

            ' SQL文の設定(社員コード順に表示する)
            cmd.CommandText = "SELECT 社員コード, 社員氏名, 社員カナ "
            cmd.CommandText &= "FROM syainTsv.txt "
            cmd.CommandText &= "ORDER BY 社員コード"

            ' データを取得する 
            da.SelectCommand = cmd
            ds.Clear()
            da.Fill(ds)

            ' リストボックスに社員氏名を表示する
            Me.ListBox1.DisplayMember = "社員氏名"

            ' 社員氏名に対応した社員コードを取得する
            Me.ListBox1.ValueMember = "社員コード"

            ' リストボックスにsyainTsv.txtのデータを連結する
            Me.ListBox1.DataSource = _
            ds.Tables(ds.Tables(0).ToString)

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

        End Try

    End Sub

End Class