从文本文件C#中加载dataGridView中的单元格值

时间:2015-02-09 01:51:37

标签: c# datagridview streamreader streamwriter

我正在使用StreamWriter在dataGridView中的所有现有单元格上写入所有值,该编写器工作正常。但我的读者并没有很好地开展工作。

这是我的编写代码(没有问题):

 StreamWriter writer = new StreamWriter(valuePath);
        foreach (DataGridViewRow row in dataGridView1.Rows)
        {
            foreach (DataGridViewCell cell in row.Cells)
            {
                writer.WriteLine(cell.Value);
            }
        }
        writer.Close();

这是我的读者代码:

StreamReader sr = new StreamReader(valuePath);
        foreach (DataGridViewRow row in dataGridView1.Rows)
        {
            foreach (DataGridViewCell cell in row.Cells)
            {
                cell.Value = sr.ReadLine();
            }
        }
        sr.Close();

输出: 的周一 1 星期二 2 星期三 3

此代码正在将每行从txt文件读入我的dataGridView中的“现有单元格”,因此当应用程序打开时,只有一行。这就是为什么我的读者不能正常工作的原因。有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

我建议您以这种格式编写文本文件:

cell1,cell2,...

cell1,cell2,...

cell1,cell2,...

...

要执行此操作,请将您的writer代码更改为:

StreamWriter writer = new StreamWriter(valuePath);
string line;
foreach (DataGridViewRow row in dataGridView1.Rows)
{
    line = "";
    foreach (DataGridViewCell cell in row.Cells)
    {
        line += cell.Value.ToString();
    }
    writer.WriteLine(line);
}
writer.Close();

reader代码应相应更改为:

StreamReader sr = new StreamReader(valuePath);
string line;
string[] values;
int n=0;

while(!sr.EndOfStream)
{
    line = sr.ReadLine();
    values = line.Split(',');

    for(int m=0; m<values.Length; m++)
    {
       dataGridView1[m, n].Value = values[m];
    }
    n++;
}
sr.Close();