2013-02-19 84 views
1

我有这个职位类似的要求... Populate Gridview at runtime using textfile的StreamReader与制表符分隔文本文件

,我想读的文本文件StreamReader,并使用该文件中的数据DataTable,但是我我不知道如何通过选项卡实现split()

请问有人能指出我正确的方向吗?

+0

sr.ReadLine()。分割(“\ t”的) ;用于vb不知道这一点。 – Neha 2013-02-19 09:50:39

+0

字段由制表符分隔,行如何分隔?换行符? – 2013-02-19 09:53:19

+0

新行是新行。这是一个相当简单和标准的edi文件格式,我正在尝试读取并显示给最终用户。 – Stuart 2013-02-19 10:03:02

回答

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 2013-02-19 10:05:24

+1

@Stuart不客气,我很乐意提供帮助。告诉我,如果它的工作... – 2013-02-19 10:07:01

+0

这工作像一个魅力,再次感谢:@) – Stuart 2013-02-20 09:26:38

0

如果只有制表符,你可以使用斯普利特(“\ t”),但如果制表符空格,你可能想使用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')); 
    } 
} 
相关问题