- ベストアンサー
C# datagridviewのエラーと解決法
- C#のdatagridviewで「列の FillWeight 値の合計が 65535 を超えることはできません。」というエラーが出る場合の解決法を教えてください。
- C#のdatagridviewでヘッダー部分が文字化けしてしまう場合の解決法を教えてください。
- C#のdatagridviewでcsvのすべてのデータを表示させたいが、2列しか表示されない場合の解決法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
元のCSVを提示していただいたほうがいいかも データは何列必要なんでしょう また CSVの文字コードは何で保存してありますか? Shift-JISでしょうか
その他の回答 (2)
- redfox63
- ベストアンサー率71% (1325/1856)
この書き方なら エンコードによる文字化けではないように思えます 30列追加ということであれば CSVの読み込みループの中で列の追加というより 読み込みループに入る前に 列の設定をする方向だと思います if (sfd.ShowDialog() == DialogResult.OK) { // ここで列の追加を行う dataGridView1.Columns.Add("clmName1", "日付"); for ( int n = 1; n < 31; n++ ) { String ss1 = String.Format("Time{0}", n ); String ss2 = String.Format("データ{0}", n ); this.dataGridView1.Columns.Add(ss1,ss2); } // ココまでを追加 // CSVファイルオープン System.IO.StreamReader sw = new System.IO.StreamReader(sfd.FileName); // CSVファイルの各セルをDataGridViewに表示 int r = 0; String lin = ""; do { lin = sw.ReadLine(); if (lin != null) { // ここはコメントアウト // if (r == 0) // { // dataGridView1.Columns.Add("clmName1", "日付"); // this.dataGridView1.Columns.Add("Time", "データ"); // } //ココまで this.dataGridView1.Rows.Add(); String[] csv = lin.Split(','); for (int c = 0; c <= csv.GetLength(0) - 1; c++) { if (c < this.dataGridView1.Columns.Count) { this.dataGridView1.Rows[r].Cells[c].Value = csv[c]; } } r += 1; } } while (lin != null); // CSVファイルクローズ sw.Close(); tabControl1.SelectedIndex = 1; }
- redfox63
- ベストアンサー率71% (1325/1856)
文字化けが Shift-JISによるものなら System.IO.StreamReader sw = new System.IO.StreamReader(sfd.FileName); を エンコードつきのコンストラクターに変えましょう System.IO.StreamReader sw = new System.IO.StreamReader(sfd.FileName, System.Text.Encoding.GetEncoding(932)); といった具合です
補足
ありがとうございます. 追記で保存の場合でも同じように定義してやれば 文字を文字化けさせずに保存できるのでしょうか? 参考に同じように保存する際に定義しているプログラムを書きに記載いたします. ご教授よろしくお願いいたします. // ファイルを指定してインスタンス作成 System.IO.StreamWriter sw = new System.IO.StreamWriter(sfd.FileName);
補足
とりあえずデータは30列ぐらい必要です. 文字コードはおそらくおっしゃられているものです. ご教授願いいたします.