
Visual Studio2015 の Windows Forms アプリ
DataGridViewのグリッドをCSVファイルに出力したが
CSVファイルに表示されているグリッドの表記が違うのですがどこがおかしいのでしょうか??
今の現状は
e.Valueの値が1なら"入庫"に変換されなく、
日付の列の表記が全て###...になっていたりとグリッドに表示したときは上手くいっているのですが出力となると反映されていません。
お力添え頂きたいです。
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 // dataGridViewからデータ取得(Loop処理) 20 if (FileOutput == DialogResult.OK) 21 { 22 //「保存」ボタンが押された時の処理 23 string fileName = result.FileName; //指定されたファイルのパスを取得する 24 } 25 else if (FileOutput == DialogResult.Cancel) 26 { 27 //「キャンセル」ボタンまたは「×」ボタンが選択された時の処理 28 } 29 30 // 保存用のファイルを開く ( ファイルパス )( ファイル名 ) (文字コード指定) 31 using (StreamWriter writer = new StreamWriter(@"C:\Users\Admin\Downloads\ForOutput.csv", false, Encoding.GetEncoding("shift_jis"))) 32 { 33 int rowCount = DataGrid.Rows.Count; 34 if (DataGrid.AllowUserToAddRows == true) 35 { 36 // rowCount 最後の新規入力用の1行分を差し引く 37 rowCount = rowCount - 1; 38 } 39 40 // 行 rowCount DataGrildViewの行数文ループ 41 for (int i = 0; i < rowCount; i++) 42 { 43 // リストの初期化 44 List<String> strList = new List<String>(); 45 // 列 Columns.Coun カルムと同じ数だけループする 46 for (int j = 0; j < DataGrid.Columns.Count; j++) 47 { 48 strList.Add(DataGrid[j, i].Value.ToString()); 49 } 50 51 // 配列へ変換 52 String[] strArray = strList.ToArray(); 53 // CSV 形式に変換(ファイル出力) 54 String strCsvData = String.Join(",", strArray); 55 writer.WriteLine(strCsvData); 56 } 57 } 58 } 59 60 /// <summary> 61 /// 入出庫種別の値変換 62 /// </summary> 63 private void DataGrid_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) 64 { 65 DataGridView dgv = (DataGridView)sender; 66 // セルの列を判断 67 if (dgv.Columns[e.ColumnIndex].Name == "IN_OUT_TYPE") 68 { 69 // Value 対象セルの値 70 // null時に処理を抜ける 71 if (e.Value == null) 72 { 73 return; 74 } 75 76 // e.Valueの値が1なら"入庫"に変換 77 if (int.Parse(e.Value.ToString()) == 1) 78 { 79 e.Value = "入庫"; 80 } 81 82 // e.Valueの値が2なら"出庫"に変換 83 else if (int.Parse(e.Value.ToString()) == 2) 84 { 85 e.Value = "出庫"; 86 } 87 } 88 } 89
回答1件
あなたの回答
tips
プレビュー