Visual Studio2015の Windows Forms アプリ
下記のようにDataGridViewのヘッダーを取得してCSVに書き込みすると列の頭だけに表示させたいのですが列と行にずらりと表示されてしまします
どこがおかしいのでしょうか?
strList.Add(DataGrid.Columns[j].HeaderCell.Value.ToString());
C#
1 /// <summary> 2 /// CSV出力ボタン押下時 3 /// </summary> 4 private void CSV_Output_Click(object sender, EventArgs e) 5 { 6 // SaveFileDialogを作成する 7 SaveFileDialog result = new SaveFileDialog(); 8 result.Title = "ファイルを保存する"; 9 // 初期表示時のディレクトリを指定 10 result.InitialDirectory = @"C:\Users\Admin\Downloads"; 11 // ファイル名を指定、取得する 12 result.FileName = @"ForOutput.csv"; 13 // 選択できるファイルの種類を指定する 14 result.Filter = "CSV (カンマ区切り)|*.csv"; 15 // ファイル出力(保存)ダイアログ表示 16 DialogResult FileOutput = result.ShowDialog(); 17 18 // //「保存」ボタンが押された時の処理 19 if (FileOutput == DialogResult.OK) 20 { 21 //指定されたファイルのパスを取得する 22 string fileName = result.FileName; 23 } 24 else if (FileOutput == DialogResult.Cancel) 25 { 26 //「キャンセル」ボタンまたは「×」ボタンが選択された時の処理 27 } 28 29 // 保存用のファイルを開く ( ファイルパス )( ファイル名 ) (文字コード指定) 30 using (StreamWriter writer = new StreamWriter(@"C:\Users\Admin\Downloads\ForOutput.csv", false, Encoding.GetEncoding("shift_jis"))) 31 { 32 // 行数を取得する 33 int rowCount = DataGrid.Rows.Count; 34 if (DataGrid.AllowUserToAddRows == true) 35 { 36 // 最後の新規入力用の1行分を差し引く 37 rowCount = rowCount - 1; 38 } 39 40 // rowCount 行数文ループ 41 for (int i = 0; i < rowCount; i++) 42 { 43 // リストの初期化 44 List<String> strList = new List<String>(); 45 46 // Columns.Count カルムと同じ数だけループする 47 for (int j = 0; j < DataGrid.Columns.Count; j++) 48 { 49 //列と行を追加していく。 50 strList.Add(DataGrid[j, i].Value.ToString()); 51 52 53 54 *おかしい箇所→→ //ヘッダを出力 * 55 strList.Add(DataGrid.Columns[j].HeaderCell.Value.ToString()); 56 57 58 59 } 60 61 // 配列へ変換 62 String[] strArray = strList.ToArray(); 63 // CSV 形式に変換(ファイル出力) 64 String strCsvData = String.Join(",", strArray); 65 writer.WriteLine(strCsvData); 66 } 67 } 68 }

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/22 04:33
2018/06/22 04:43
2018/06/22 04:49
2018/06/22 05:57