• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C# datagridview)

C# datagridviewのエラーと解決法

このQ&Aのポイント
  • C#のdatagridviewで「列の FillWeight 値の合計が 65535 を超えることはできません。」というエラーが出る場合の解決法を教えてください。
  • C#のdatagridviewでヘッダー部分が文字化けしてしまう場合の解決法を教えてください。
  • C#のdatagridviewでcsvのすべてのデータを表示させたいが、2列しか表示されない場合の解決法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

元のCSVを提示していただいたほうがいいかも データは何列必要なんでしょう また CSVの文字コードは何で保存してありますか? Shift-JISでしょうか

Ashgin
質問者

補足

とりあえずデータは30列ぐらい必要です. 文字コードはおそらくおっしゃられているものです. ご教授願いいたします.

その他の回答 (2)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.3

この書き方なら エンコードによる文字化けではないように思えます 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)
回答No.2

文字化けが 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)); といった具合です

Ashgin
質問者

補足

ありがとうございます. 追記で保存の場合でも同じように定義してやれば 文字を文字化けさせずに保存できるのでしょうか? 参考に同じように保存する際に定義しているプログラムを書きに記載いたします. ご教授よろしくお願いいたします. // ファイルを指定してインスタンス作成 System.IO.StreamWriter sw = new System.IO.StreamWriter(sfd.FileName);

関連するQ&A