2013-02-19 3 views
1

У меня есть аналогичные требования к этой должности ... Populate Gridview at runtime using textfileStreamReader с табуляцией текстовый файл

Где я хочу прочитать текстовый файл с StreamReader и заполнить DataTable с данными в файле, однако я m не уверен, как реализовать split() с вкладкой.

Может ли кто-нибудь указать мне в правильном направлении, пожалуйста?

+0

sr.ReadLine(). Split («\ т») ; используемый в vb, не уверен в этом. – Neha

+0

Поля ограничены вкладкой, как строки ограничены? По новой строке? –

+0

новые строки - это новые строки. это довольно простой и стандартный формат файла edi, который я пытаюсь прочитать и отобразить конечному пользователю. – Stuart

ответ

13

Вы можете попробовать это:

 DataTable table = new DataTable(); 
     table.Columns.Add("col1"); 
     table.Columns.Add("col2"); 
     table.Columns.Add("col3"); 

     var lines = File.ReadAllLines(@"Data.txt").ToList(); 
     lines.ForEach(line => table.Rows.Add(line.Split((char)9))); 

Я предположил, что строки разделены символом новой строки (если это так, то может использоваться метод ReadAllLines). Число 9 - это значение ASCII для символа горизонтальной вкладки, и оно используется для разделения строки. ForEach - метод, который может использоваться в общих списках, он есть вместо цикла foreach.

+1

Спасибо, я попробую это сегодня и вернусь к тому, как я буду дальше. Очень признателен! – Stuart

+1

@Stuart Добро пожаловать, я рад помочь. Скажите, если это сработало ... –

+0

Это сработало как шарм, еще раз спасибо: @) – Stuart

0

Если у вас есть только символы табуляции можно использовать Split («\ т»), но если язычки белые пространства вы можете использовать regular expressions

2

Экранирующий символ для вкладки в C# является \t, так чтобы прочитать файл и разделить каждую строку на вкладке Я бы использовать

var path = "path to file"; 
using (StreamReader sr = new StreamReader(path)) 
{ 
    while (sr.Peek() >= 0) 
    { 
     //Reads the line, splits on tab and adds the components to the table 
     table.Rows.Add(sr.ReadLine().Split('\t')); 
    } 
}