2015-05-28 2 views
-5

мне нужна помощь :-)Как расщепленный пространство заполнить DataGridView из файла .txt в C#

У меня есть file.txt с содержанием, как показано ниже:

00001 JhonKey  023301923 
00002 Hercules 023039910 

Я хочу, чтобы загрузить этот файл DataGridView через DataTable и результат должен быть сохранен в сетке данных, как показано ниже:

COL1 | COL2  | COL3 
----------------------------------- 
00001 | JhonKey | 023301923 
00002 | Hercules | 023039910 

Я пытаюсь этот код:

using (StreamReader SR = new StreamReader(txtFileName)) 
     { 
      int row = 0; 
      string line; 
      while ((line = SR.ReadLine())!= null) 
      { 
       string[] Columns = line.Split(','); 
       dataGridView2.Rows.Add(); 
       for (int i = 0; i < Columns.Length; i++) 
       { 
        dataGridView2[i, row].Value = Columns[i]; 
       } 
       row++; 
      } 
     } 

, но результат не такой, как ожидалось. Это выглядит не так, все wirtten в первом столбце, как показано ниже:

COL1       | COL2  | COL3 
-------------------------------------------------------- 
00001 JhonKey 023301923 |    | 
00002 Hercules 023039910 |    | 
+0

Вы имеете в виду использование перерыв точка? –

+0

отлично это работает, но я должен создать разделенное пространство для мелодии пространства, которое используется на file.txt –

+0

Посмотрите в моем ответе ниже –

ответ

0

Возьмите смотрите на строку строки [] Столбцы = line.Split (''); Вы пытаетесь разделить строку запятой, но никаких запятых в файле. Попробуйте разделить пространство. Как

string[] Columns = line.Split(' '); 

Или

string[] Columns = line.Split(new []{' '}, StringSplitOptions.RemoveEmptyEntries) 
+0

отлично это работает, но я должен создать разделенное пространство для мелодии пространства, которое используется на file.txt как показано ниже: string [] Columns = line.Split (''); –

0
using System.Data; 
using System.IO; 


public class FromYourFileToGrid 
{ 

public static DataTable DataTableFromYourTextFile(string directory, char splitter=',') 
{ 
    DataTable result; 

    string[] LineArray = File.ReadAllLines(directory); 

    result = FormDataTable(LineArray, splitter); 

    return result; 
} 


private static DataTable FormDataTable(string []LineArray, char splitter) 
{ 
    bool IsHeaderSet = false; 

    DataTable dt = new DataTable(); 

    AddColumnToTable(LineArray, splitter, ref dt); 

    AddRowToTable(LineArray, splitter, ref dt); 

    return dt; 
} 


private static void AddRowToTable(string []valueCollection, char splitter, ref DataTable dt) 
{ 

    for (int i = 1; i < valueCollection.Length; i++) 
    { 
    string[] values = valueCollection[i].Split(splitter); 

    DataRow dr = dt.NewRow(); 

    for (int j = 0; j < values.Length; j++) 
    { 
     dr[j] = values[j]; 
    } 

    dt.Rows.Add(dr); 
    } 
} 


private static void AddColumnToTable(string []columnCollection, char splitter, ref DataTable dt) 
{ 
    string[] columns = columnCollection[0].Split(splitter); 

    foreach (string columnName in columns) 
    { 
    DataColumn dc = new DataColumn(columnName, typeof(string)); 
    dt.Columns.Add(dc); 
    } 

} 

} 

Вы добавили coloumns и строки в том же цикле. Это ложный способ создания сетки. Вы должны добавить строки и coloumns в дифференте method.Above класс будет создать сетку, а затем добавить coloumn, строку к вашему grid.You можно назвать выше методы класса с:

dataGridView1.DataSource =  FromYourFileToGrid.DataTableFromYourTextFile("file.txt", '|'); 

А потом Вашие данные будут добавлены coloumns и строки правильно. И вы должны читать все больше и больше учебников. Потому что эти вопросы задавали в Stackoverflow. Вы можете прочитать этот вопрос Reading from .txt file, then exporting data to DataGridView. Надеюсь, этот код поможет вам.

+0

спасибо и очень Мерт Озогул за вашу помощь :-) –

Смежные вопросы