1.CSVファイルをADO.NETを使ってDataGridViewに表示(その1) 2.CSVファイルをADO.NETを使って非連結でDataGridViewに表示(その2) 3.Excel ファイルをADO.NETを使ってDataGridViewに表示 4.mdbファイルをADO.NETを使ってDataGridViewに表示 5.DataGridView に表示中のデータをCSV形式で保存 6.DataGridViewでチェックボックスを表示する 7.DataGridView 初期化プロシージャ (1)コレクションを空にします(行・列削除) (2)DataSource に既定値を設定 (3)セルスタイルを初期値に設定 (4)行ヘッダーを初期値に設定 (5)行ヘッダーを表示 (6)デフォルトの行の高さを設定 (7)列ヘッダーを初期値に設定 (8)列ヘッダーを表示 (9)列ヘッダーの高さを既定値に設定 (10)左端上端のヘッダーを初期値に設定 (11)奇数行に適用される既定のセルスタイルを初期値に設定 (12)セルの境界線スタイルを初期値(一重線の境界線)に設定 (13)セルを区切るグリッド線の色を初期値に設定 |
||||
開発環境 | WindowsVista VB2010(VS2010 Pro) Framework 4 / ターゲットCPU:X86 [Option Compare Text] [Option Explicit On] [Option Infer On] [Option Strict On]で設定 |
|||
その他条件 | 使用データ(dgvdat1.csv)は、次よりダウンロードして使って下さい。 dgvdat309.zip データファイルは、プログラムの起動フォルダーに入れておいてください。 |
|||
1.CSVファイルをADO.NETを使ってDataGridViewに表示(その1) 下記方法は、比較的簡単で、VBのソースコードのようなデータ(vb60log.csv)も読み込み表示出来る上に結構素早く読み込むことができ便利かと思います。 Private Sub Button2_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button2.Click DGVClear(DataGridView1) '初期化のSub プロシージャを Call 'CSVファイルをADO.NETを使ってDataGridViewに表示その1 Using cn As New System.Data.OleDb.OleDbConnection 'データファイルは、EXE と同じフォルダーに入れてください。 Dim FolderPath As String = Application.StartupPath() Dim csvFileName As String = "dgvdat1.csv" '"uriage.csv" ' cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & FolderPath & _ ";Extended Properties=""Text;HDR=YES;IMEX=1;FMT=Delimited""" Using da As System.Data.OleDb.OleDbDataAdapter = _ New System.Data.OleDb.OleDbDataAdapter("SELECT * FROM " & csvFileName, cn) Dim ds As New DataSet da.Fill(ds, "Table1") 'DataGridView に表示するデータ ソースを設定 DataGridView1.DataSource = ds.Tables("Table1") End Using End Using '※ 上記読み込み例は、Microsoft Chart Controls のサンプルで使っているコードと同じです。 '表示するデータ ソースを設定 の部分だけが追加になっています。 End Sub 7.DataGridView 初期化プロシージャ ※ 通常は必要ありませんが、Tips の動作確認のために表示状態を元に戻す場合やデータファイルを読み込み直す場合等に必要なので。 Private Sub DGVClear(ByVal dgv As DataGridView) With dgv '列数が>0なら表示されていると判断し、一旦消去(表示速度には影響なし) If .Rows.Count > 0 Then .Columns.Clear() 'コレクションを空にします(行・列削除) .DataSource = Nothing 'DataSource に既定値を設定 .DefaultCellStyle = Nothing 'セルスタイルを初期値に設定 .RowHeadersDefaultCellStyle = Nothing '行ヘッダーを初期値に設定 .RowHeadersVisible = True '行ヘッダーを表示 'フォントの高さ+9 (フォントサイズ 9 の場合、12+9= 21 となる .RowTemplate.Height = 21 'デフォルトの行の高さを設定(表示後では有効にならない) .ColumnHeadersDefaultCellStyle = Nothing '列ヘッダーを初期値に設定 .ColumnHeadersVisible = True '列ヘッダーを表示 .ColumnHeadersHeight = 23 '列ヘッダーの高さを既定値に設定 .TopLeftHeaderCell = Nothing '左端上端のヘッダーを初期値に設定 '奇数行に適用される既定のセルスタイルを初期値に設定 .AlternatingRowsDefaultCellStyle = Nothing 'セルの境界線スタイルを初期値(一重線の境界線)に設定 .AdvancedCellBorderStyle.All = DataGridViewAdvancedCellBorderStyle.Single .GridColor = SystemColors.ControlDark 'セルを区切るグリッド線の色を初期値に設定 .Refresh() '再描画 End If End With '※ 上記設定は、必要により、追加・削除してください。 End Sub |
||||
2.CSVファイルをADO.NETを使って非連結でDataGridViewに表示(その2) CSVファイルをADO.NETを使って、1行づつ表示 (MyClipBoard で使用) 読み込んだCSVファイルを編集・加工時に楽なように、非連結で表示しています。 但し、読み込み表示に時間がかかるので、目的やデータに合せて使ってください。 使用データファイルは、vb60log.csv を使ってください。(dgvdat1.csv でも表示可) Private Sub Button3_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button3.Click DGVClear(DataGridView1) '初期化のSub プロシージャを Call DataGridView1.RowTemplate.Height = 60 Using cn As New System.Data.OleDb.OleDbConnection 'データのあるフォルダー(下記の場合は、プログラム起動フォルダーのパスを指定) Dim FolderPath As String = Application.StartupPath 'CSV ファイル名 (フルパスで書かないで下さい) Dim csvFileName As String = "vb60log.csv" 'HDR 等の接続文字列のオプションの詳細説明は下記をご覧下さい。 cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & FolderPath & _ ";Extended Properties=""Text;HDR=YES;IMEX=1;FMT=Delimited""" Using da As System.Data.OleDb.OleDbDataAdapter = _ New System.Data.OleDb.OleDbDataAdapter("SELECT * FROM " & csvFileName, cn) Dim ds As DataSet = New DataSet() da.Fill(ds) '--------------------------------------------------------------------- 'TextBox 列を作成 Dim newColumn(ds.Tables(0).Columns.Count - 1) As DataGridViewTextBoxColumn For i As Integer = 0 To ds.Tables(0).Columns.Count - 1 newColumn(i) = New DataGridViewTextBoxColumn '新規列を挿入 DataGridView1.Columns.Insert(i, newColumn(i)) 'HeaderText を設定 DataGridView1.Columns.Item(i).HeaderText = ds.Tables(0).Columns(i).Caption Next i '行を挿入 DataGridView1.Rows.Insert(0, 1) Dim RcNo As Integer = -1 For Each dr As DataRow In ds.Tables(0).Rows RcNo += 1 If RcNo > 0 Then '行を挿入 Me.DataGridView1.Rows.Insert(RcNo, 1) End If For i As Integer = 0 To ds.Tables(0).Columns.Count - 1 '各列にデータを表示 DataGridView1.Item(i, RcNo).Value = dr(i).ToString Next i Next End Using End Using DataGridView1.Columns(6).DefaultCellStyle.WrapMode = DataGridViewTriState.True DataGridView1.Columns(0).Width = 45 DataGridView1.Columns(1).Width = 60 DataGridView1.Columns(2).Width = 60 DataGridView1.Columns(6).Width = 400 End Sub |
||||
3.Excel ファイルをADO.NETを使ってDataGridViewに表示 下記の[サンプル投稿用掲示板]内で紹介しておりますので、そちらをご覧ください。 http://hanatyan.sakura.ne.jp/patio/read.cgi?no=252 |
||||
4.mdbファイルをADO.NETを使ってDataGridViewに表示 下記の[サンプル投稿用掲示板]内で紹介しておりますので、そちらをご覧ください。 http://hanatyan.sakura.ne.jp/patio/read.cgi?no=253 |
||||
5.DataGridView に表示中のデータをCSV形式で保存 VB のソースコードのようなデータも保存できるように設定してあり、普通のCSVファイルも保存できます。 append を false で設定しておりますので(上書き/名前を付けて保存に対応)目的に合せて変更して下さい。 若干保存に時間がかかるかも知れませんが、大抵のデータに対応でき、Excel 等に表示する場合でも難なく表示でき便利かと思います。 Private Sub Button7_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button7.Click CsvFileSave("saveTest2.csv") End Sub Private Sub CsvFileSave(ByVal SaveFileName As String) '表示中のデータをCSV形式で(上書き保存)保存 Dim FileName As String = SaveFileName '現在のファイルに上書き保存 Using swCsv As New System.IO.StreamWriter(FileName, _ False, System.Text.Encoding.GetEncoding("SHIFT_JIS")) Dim sf As String = Chr(34) 'データの前側の括り Dim se As String = Chr(34) & "," 'データの後ろの括りとデータの区切りの "," Dim i, j As Integer Dim WorkText As String = "" '1個分のデータ保持用 Dim LineText As String = "" '1列分のデータ保持用 With DataGridView1 'ヘッダー部分の取得・保存(保存する必要がなければいらない) For i = 0 To .Columns.Count - 1 WorkText = .Columns.Item(i).HeaderText If WorkText.IndexOf(Chr(34)) > -1 Then 'データ内に " があるか検索 WorkText = WorkText.Replace("""", """""") 'あれば " を "" に置換える End If If i = .Columns.Count - 1 Then 'ヘッダー行を列分連結 LineText &= sf & .Columns.Item(i).HeaderText & sf '最後の列の場合 Else LineText &= sf & .Columns.Item(i).HeaderText & se End If Next i swCsv.WriteLine(LineText) 'ヘッダーの部分の書き込み '最下部の新しい行(追加オプション)を非表示にする DataGridView1.AllowUserToAddRows = False '実データ部分の取得・保存処理 For i = 0 To .RowCount - 1 LineText = "" '1行分のデータをクリア For j = 0 To .Columns.Count - 1 '1行分のデータを取得処理 WorkText = .Item(j, i).Value.ToString '1個セルデータを取得 If WorkText.IndexOf(Chr(34)) > -1 Then 'データ内に " があるか検索 WorkText = WorkText.Replace("""", """""") 'あれば " を "" に置換える End If If j = .Columns.Count - 1 Then '1行分の列データを連結 LineText &= sf & WorkText & sf '最後の列の場合 Else LineText &= sf & WorkText & se End If Next j swCsv.WriteLine(LineText) '1行分のデータを書き込み Next i End With End Using MessageBox.Show("現在表示中のデータを " & FileName & " で保存しました。") End Sub |
||||
6.DataGridViewでチェックボックスを表示する 下記の[サンプル投稿用掲示板]内で紹介しておりますので、そちらをご覧ください。 http://hanatyan.sakura.ne.jp/patio/read.cgi?no=254 |
||||