Vigna
Vigna

Reputation: 113

How to read /load text (*.txt) file values in datagridview using C# ..?

can anyone help me..?

Here, i need to read/load text (*.txt) file values in my datagridview. this is that sample text file, which i need to load.

 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

can anyone present how to load these text file values to my datagridview cells, those heading like data1,data2,.....data10 must load in column header and remaining row values should load in seperate cells of datagridview according to their column header.

Thanks in advance.

Upvotes: 4

Views: 37381

Answers (3)

Ganesh Jadhav
Ganesh Jadhav

Reputation: 2848

Try this..

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;

And don't be discouraged, but this is not the proper way to ask a question out here on SO. Please get yourself familiar first.

Upvotes: 5

DDark Burning Chris
DDark Burning Chris

Reputation: 15

        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);

Upvotes: 1

Alex Filipovici
Alex Filipovici

Reputation: 32541

One way to do it is:

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);
    }
}

Of course, this works for the sample input file that you provided. Any variation to that format would require further validation and an increase in code complexity.

Upvotes: 4

Related Questions