VB.NETでCSVを読み込んで、DataTableに入れる方法です。
CSVを読み込んでDataTableに入れる
CSVを読み込んでDataTableに入れる場合、Jet Providerを使うことで実現可能です。
再現のため、簡単な画面を作りました。
- 左上のテキストボックスにフルパスを入力して「CSV取り込み」ボタンをクリック
- CSVの中身をデータテーブルに入れる
- データテーブルの中身をループして下のテキストボックスに出力
という仕様です。
実装
サンプルコードはこちら。Jet Providerを使っています。
Private Sub cmdImportCSV_Click(sender As Object, e As EventArgs) Handles cmdImportCSV.Click 'フルパスからCSV格納ディレクトリを取得 Dim strTargetDir As String = System.IO.Path.GetDirectoryName(txtTarget.Text) 'フルパスからファイル名取得 Dim srtTargetFile As String = System.IO.Path.GetFileName(txtTarget.Text) '接続文字列の作成 '1行目をヘッダーとして取り込んだ場合 Dim strCon As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strTargetDir & ";Extended Properties=""text;HDR=Yes;FMT=Delimited""" ''1行目をヘッダーとせずに取り込んだ場合 'Dim strCon As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strTargetDir & ' ";Extended Properties=""text;HDR=No;FMT=Delimited""" 'OLEDBのコネクション作成 Dim objCon As New System.Data.OleDb.OleDbConnection(strCon) 'DataAdapterでCSVの中身を取得 Dim strCommand As String = "SELECT * FROM [" + srtTargetFile + "]" Dim ojbDataAdapter As New System.Data.OleDb.OleDbDataAdapter(strCommand, objCon) 'DataTableに格納 Dim objDataTable As New DataTable ojbDataAdapter.Fill(objDataTable) 'テキストボックスに表示 For Each row As DataRow In objDataTable.Rows '1行目をヘッダーとして取り込んだ場合 txtResult.Text += row("名前") & "," txtResult.Text += row("年齢") & "," txtResult.Text += row("性別") & vbCrLf ''1行目をヘッダーとせずに取り込んだ場合 'For iCnt As Integer = 0 To objDataTable.Columns.Count - 1 ' txtResult.Text += row(iCnt) & "," 'Next ''末尾のカンマ削除、改行コード挿入 'txtResult.Text = txtResult.Text.TrimEnd(CType(",", Char)) & vbCrLf Next End Sub
1行目をヘッダーとして扱う場合は、接続文字列の作成で「HDR=Yes」と記載し、1行目をヘッダーとして扱いたくない場合は、「HDR=No」と記載します。
'1行目をヘッダーとして扱う Dim strCon As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "対象フォルダ" & ";Extended Properties=""text;HDR=Yes;FMT=Delimited""" '1行目をヘッダーとして扱わない Dim strCon As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "対象フォルダ" & ";Extended Properties=""text;HDR=No;FMT=Delimited"""
実行するとこうなります。
DataTableと聞くとちょっと身構えてしまうかもしれませんが、案外簡単にできます。
参考リンク
関連記事
【VB.NET】TextFieldParserを使って超簡単にCSVファイルを読み込む!
若手エンジニアから「CSVファイルの読み込み方がわからん」と言われたので書きます。最終目的としてはCSVでインポートしたデータをグリッドに表示したいらしいのですが、まずはCSV読み込むところから始めましょう。別に難しい事ではありません。「あ...
.