C# datagridview csv 読込
datagridviewにcsvファイルを読み込んでいるのですが,csvファイル内の行列数分のみ列数・行数をdatagridviewに生成したいのですが,どうも必要以上の列数・行数を生成してしまいます.
下記にそのプログラムを記載いたします.
どなたか,必要分のみするにはどうすればよろしいかご教授願えないでしょうか?
private void button1_Click(object sender, EventArgs e)
{
string strName = "xxx.csv"; // 仮のファイル名
string strPath = "c:/csv/"; // 仮のディレクトリ名
OpenFileDialog sfd = new OpenFileDialog();
sfd.InitialDirectory = strPath;
sfd.FileName = strName;
sfd.Filter = "CSVファイル(*.csv)|*.csv|xlsファイル(*.xls)|*.xls|xlsxファイル(*.xlsx)|*.xlsx|テキスト(*.txt)|*.txt";
sfd.Title = "開くファイルを選択してください";
sfd.RestoreDirectory = true;
sfd.CheckFileExists = false;
if (sfd.ShowDialog() == DialogResult.OK)
{
// 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)
{
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();
}
補足
DataGridに表示されたデータをフィルターをかけるような形で、条件していで絞りたいのですが、ご指導よろしくお願いします。 datagridview1.columns(0).valuetype=system.type.gettype("SystemString") ・・・・・ というようにフォームを読み込む時にフォーム読み込み時にデータ型を取得し、StreamReaderで読み込みました。