前提・実現したいこと
前提
①読み込むcsvファイルのカラムと完全一致ではなく一部一致なので割り当てるデータが無い場合も存在します。
②読み込むcsvファイルのカラム順は固定されています。
実現したいこと
ファイルを読み込みそのファイルをDataGridViewのカラムごとに割り当てたいです。
理解ができておらず説明が不足している部分が多々あると思いますが、よろしくお願いします
質問内容
読み込んだデータを挿入する方法を知りたいです
csvファイルに無い列に関しては空にしたいです。 「空」の文字列("")で作成したいです。
読み込むcsvファイル
コード,名前,生息地,番号,メールアドレス
0001,佐藤,神奈川県,0000-00-0000,nakayama@aaa.com
0002,土田,新潟県,0120-00-1245,sdjnaidm@aaa.com
0003,中山,富山県,0786-00-0000,fhsuw@aaa.com
0004,田中,愛知県,0516-00-2652,aaaaa@aaa.com
0005,山田,石川県,0585-58-5482,yamada@aaaa.com
0006,鈴木,山梨県,0555-55-5555,suzuki@aaaa.com
0007,大田,福岡県,5584-58-2541,oota@saaa.com
読み込み時使用しているソースコード
C#
1private void Read_csv(string filepath) 2 { 3 DataTable dataTable = new DataTable(); 4 string[] lines = File.ReadAllLines(filepath,Encoding.GetEncoding("Shift_JIS")); 5 if(lines.Length>0) 6 { 7 string firstline = lines[0]; 8 string[] strHeader = firstline.Split(','); 9 foreach(string strWorld in strHeader) 10 { 11 dataGridView1.Columns.Clear(); 12 dataTable.Columns.Add(new DataColumn(strWorld)); 13 } 14 for(int row=1;row<lines.Length;row++) 15 { 16 string[] word = lines[row].Split(','); 17 DataRow dataRow = dataTable.NewRow(); 18 int columindex = 0; 19 foreach(string strWorld in strHeader) 20 { 21 dataRow[strWorld] = word[columindex++]; 22 } 23 dataTable.Rows.Add(dataRow); 24 } 25 }
### このレイアウトに変換したい
c#
1DataTable table = new DataTable("Table"); 2 3 // カラム名を指定 4 table.Columns.Add("名前"); 5 table.Columns.Add("メールアドレス"); 6 table.Columns.Add("番号"); 7 table.Columns.Add("役職"); 8 table.Columns.Add("生息地"); 9 table.Columns.Add("年齢"); 10 table.Columns.Add("コード"); 11 12 13 14 // 該当するデータを追加する(現在仮で記入、配列?で回す) 15 table.Rows.Add("B","E","D","F","C","Z","A"); 16 17 dataGridView1.DataSource = table;
補足情報(FW/ツールのバージョンなど)
visual studio2017
回答3件
あなたの回答
tips
プレビュー