ADO.NETでTSVファイルを読込む

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

 すぐ使えるADO.NET

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

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

 VB.NET(OleDb)版 

実行例

コントロール プロパティ 設定値
ListBox1 - -
BtnYomikomi Text 読込

Textファイル(ファイル名:syainTsv.txt)のデータは、TSV形式で次のようになっています。列タイトル行はなく、1行目からデータです。

"00005" "永田 和雄" "ナガタ カズオ"
"00001" "青山 太郎" "アオヤマ タロウ"
"00003" "渋谷 肇" "シブヤ ハジメ"
"00004" "玉川 健一" "タマガワ ケンイチ"

【重要】プロジェクトファイルフォルダ下の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~キー以降に、各フィールドのフィールド名、データ型等を設定します。

【参考】http://office.microsoft.com/ja-jp/assistance/HP010321661041.aspx

 TSVファイル 接続文字列 

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

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

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

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

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
		
Copyright© すぐ使えるADO.NET. All rights reserved.