質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

1回答

4499閲覧

CSVファイルに出力したデータがDataGridViewの表記と違う

xlostdjx

総合スコア39

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

1クリップ

投稿2018/06/21 07:57

編集2018/06/21 08:02

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/06/21 08:05

> DataGridViewのグリッドをCSVファイルに出力したが ←どのように出力したのかなど、具体的なことが何も書いてないようですが、それではエスパー回答者でもないと分からないかと・・・
xlostdjx

2018/06/21 08:09

コードを編集しました、
guest

回答1

0

ベストアンサー

前の質問のコメントを見てください
また、###...はExcelで見た時にその列の幅が足りてないだけではないのですか?

投稿2018/06/21 08:02

YAmaGNZ

総合スコア10242

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

xlostdjx

2018/06/21 08:08

すみません、気づかなかったです。 FormattedValueを動かせる定義ってなににあたるのでしょうか?? 調べてもよくわからなかったので、 列の幅はエクセルで設定かコードでの設定どちらのほうがいいのでしょうか?
YAmaGNZ

2018/06/21 08:17

「FormattedValue」でぐぐればやまほど出てきますが・・・・ CSVに出力する時にValueではなくFormattedValueを使ってください。 また、Excelの話ですが、 CSVファイルは単なるテキストファイルなので、列の幅の情報は持っていません。 ですので、起動したエクセルでご自分で見えるように幅を調整してください。 これはプログラムとは全く関係ありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問