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