如何使用C#读取/加载datagridview中的文本(* .txt)文件值?

时间:2013-10-25 06:27:59

标签: c# winforms datagridview

谁能帮助我......?

在这里,我需要在datagridview中读取/加载文本(* .txt)文件值。这是我需要加载的示例文本文件。

 S.NO   Data1  Data2    Data3   Data4   Data5  Data6   Data7   Data8   Data9   Data10

 1      8.3     2       9.1     3       7.5     1       25      1.5     22      1.7 
 2      5.6     4       8.2     6       8.6     3       26      2.5     23      2.3 
 3      8.7     6       7.3     9       9.3     5       28      3.5     26      3.7 
 4      2.9     8       6.4     12      4.9     7       12      4.5     24      4.3 
 5      4.6    10       5.5     15      5.7     9       25      5.5     25      5.3

任何人都可以介绍如何将这些文本文件值加载到我的datagridview单元格,那些标题如data1,data2,..... data10必须加载到列标题中,剩​​余的行值应该根据他们的数据加载到datagridview的单独单元格中列标题。

提前致谢。

3 个答案:

答案 0 :(得分:5)

试试这个..

System.IO.StreamReader file = new System.IO.StreamReader("yourfile.txt");
string[] columnnames = file.ReadLine().Split(' ');
DataTable dt = new DataTable();
foreach (string c in columnnames)
{
    dt.Columns.Add(c);
}
string newline;
while ((newline = file.ReadLine()) != null)
{
    DataRow dr = dt.NewRow();
    string[] values = newline.Split(' ');
    for (int i = 0; i < values.Length; i++)
    {
        dr[i] = values[i];
    }
    dt.Rows.Add(dr);
}
file.Close();
dataGridView1.DataSource = dt;

不要气馁,但这不是在SO上提出问题的正确方法。请先熟悉自己。

答案 1 :(得分:3)

一种方法是:

var lines = File.ReadAllLines("input.txt");
if (lines.Count() > 0)
{
    foreach (var columnName in lines.FirstOrDefault()
        .Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries))
    {
        dataGridView1.Columns.Add(columnName, columnName);
    }
    foreach (var cellValues in lines.Skip(1))
    {
        var cellArray = cellValues
            .Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
        if (cellArray.Length == dataGridView1.Columns.Count)
            dataGridView1.Rows.Add(cellArray);
    }
}

当然,这适用于您提供的示例输入文件。对该格式的任何变化都需要进一步验证并增加代码复杂性。

答案 2 :(得分:1)

        this.Size = new Size(750, 450);
        data.Size = new Size(700, 200);
        data.Location = new Point(5, 40);

        string[] raw_text = System.IO.File.ReadAllLines("Etudiant.txt");
        string[] data_col = null;

        int x = 0;

        foreach (string text_line in raw_text) {
            //MessageBox.Show(text_line);
            data_col = text_line.Split('|');

            if (x == 0){
                //header
                for (int i=0; i <= data_col.Length - 1; i++) {
                    table.Columns.Add(data_col[i]);
                }
                x++;
            }
            else {
                //data
                table.Rows.Add(data_col);
            }
        }

        data.DataSource = table;
        this.Controls.Add(data);