前提・実現したいこと
Visual Studio2015 の Windows Forms アプリ
CSV出力ボタン押下時にDataTableをセットしたDatagridviewをCSVファイルに書き込み、保存したのですが、
今の現状はエラーはありません。
ですがダイアログ表示した時に下記の画像のように開くと同時に、ファイル名とファイルの種類を設定したいのですがうまくいきません。
また下記の画像のようにしてからDatagridviewのデータをCSVファイルに書き込みたいと思っています。
お知恵をお借りしたいですどうぞよろしくお願いいたします。
!明](d23057f2de605231dcd842ce027a7c9e.png)
該当のソースコード
C#
1 2 /// <summary> 3 /// 検索ボタン押下時 4 /// </summary> 5 public void SearchBtn_Click(object sender, EventArgs e) 6 { 7 //接続文字列の設定 8 string ConnectionString = ConfigurationManager.ConnectionStrings["OracleDB"].ConnectionString; 9 Connect.ConnectionString = ConnectionString; 10 try 11 { 12 // DB接続する 13 Connect.Open(); 14 //一覧取得用SQL文を作成 15 StringBuilder SQL = new StringBuilder(); 16 //inner join 指定した2つのカラムに基づく同じデータを合わせる。 17 //ORDER BY 指定したカラムのソート順でグループ枠で並び替える。 18 SQL.AppendLine("SELECT"); 19 SQL.AppendLine(" TS.tana_cd,"); 20 SQL.AppendLine(" MT.tana_nm,"); 21 SQL.AppendLine(" TS.item_cd,"); 22 SQL.AppendLine(" MI.item_nm,"); 23 SQL.AppendLine(" TS.in_out_date,"); 24 SQL.AppendLine(" TS.in_out_type,"); 25 SQL.AppendLine(" TS.in_out_quantity,"); 26 SQL.AppendLine(" TS.QUANTITY,"); 27 SQL.AppendLine(" MI.unit_name,"); 28 SQL.AppendLine(" TS.memo"); 29 SQL.AppendLine("FROM t_stock TS"); 30 SQL.AppendLine(" inner join m_tana MT"); 31 SQL.AppendLine(" on TS.tana_cd = MT.tana_cd"); 32 SQL.AppendLine(" inner join m_item MI"); 33 SQL.AppendLine(" on TS.item_cd = MI.item_cd"); 34 SQL.AppendLine("ORDER BY"); 35 SQL.AppendLine(" TS.tana_cd,"); 36 SQL.AppendLine(" TS.item_cd,"); 37 SQL.AppendLine(" TS.in_out_date,"); 38 SQL.AppendLine(" TS.in_out_type"); 39 40 //テーブルソースからデータを取得する 41 var DA = new OracleDataAdapter(SQL.ToString(), Connect); 42 //SQL文の結果をDaTaTableに格納する 43 DA.Fill(DT); 44 //DataGridViewにDataTableをセット 45 DataGrid.DataSource = DT; 46 //DB接続解除 47 Connect.Close(); 48 } 49 catch (OracleException ex) //Exception(Oracle Ver.) アプリの実行中に起きるエラーを表す 50 { 51 //エラーが起きたときにメッセージを表示させる。 52 MessageBox.Show("エラーが起きました!"); 53 } 54 } 55 56 /// <summary> 57 /// CSV出力ボタン押下時 58 /// </summary> 59 private void CSV_Output_Click(object sender, EventArgs e) 60 { 61 //ファイル出力(保存)ダイアログ表示 62 SaveFileDialog result = new SaveFileDialog(); 63 DialogResult FileOutput = result.ShowDialog(); 64 65 66 //dataGridViewからデータ取得(Loop処理) 67 // 保存用のファイルを開く ( ファイルパス )( ファイル名 ) 68 using (StreamWriter writer = new StreamWriter(@"C:\Users\Admin\Downloads\ForOutput.csv", false, Encoding.GetEncoding("shift_jis"))) 69 { 70 71 int rowCount = DataGrid.Rows.Count; 72 // ユーザによる行追加が許可されている場合は、最後の新規入力用の 73 // 1行分を差し引く 74 if (DataGrid.AllowUserToAddRows == true) 75 { 76 rowCount = rowCount - 1; 77 } 78 79 // 行 80 for (int i = 0; i < rowCount; i++) 81 { 82 // リストの初期化 83 List<String> strList = new List<String>(); 84 85 // 列 86 for (int j = 0; j < DataGrid.Columns.Count; j++) 87 { 88 strList.Add(DataGrid[j, i].Value.ToString()); 89 } 90 String[] strArray = strList.ToArray(); // 配列へ変換 91 92 // CSV 形式に変換 93 String strCsvData = String.Join(",", strArray); 94 95 writer.WriteLine(strCsvData); 96 97 98 } 99 } 100 }

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/21 04:26
2018/06/21 04:32
2018/06/21 05:10 編集
2018/06/21 05:10
2018/06/21 05:44
2018/06/21 05:54