2011-12-08 72 views
3

我想从制表符分隔的文本文件中创建数据表。我从文件容易获取值。问题是,当文本文件中有一个空列未在代替下一个非空列内容获取在空列区域替换在文本文件数据的问题与制表符分隔的文本文件中的空列

格式数据表中创建相同空柱

id name product cost  company name 


1  abc shoe     xxx 
2  xyz chain     yyy 

数据表获得

id name product cost  company name 

1  abc  shoe  xxx 
2  xyz  chain  yyy 

我的代码来GETDATA

var reader = new StreamReader(File.OpenRead(@"d:\d.txt")); 
     var table = new DataTable("SampleTable"); 
     string[] fieldValues = reader.ReadLine().Split(new char[] { '\t' }, StringSplitOptions.RemoveEmptyEntries); 

     for (int i = 0; i < fieldValues.Length; i++) 
     { 
      table.Columns.Add(new DataColumn(fieldValues[i].ToString().Trim())); 
     } 
     while (!reader.EndOfStream) 
     { 

      var line = reader.ReadLine().Trim(); 
      var values = line.Split(new char[] { '\t' }, StringSplitOptions.RemoveEmptyEntries); 
      string[] ee = values; 

      var newRow = table.NewRow(); 
      for (int i = 0; i < ee.Length; i++) 
      { 
       newRow[i] = ee[i].Trim().ToString(); // like sample [0,0] 
      } 
      table.Rows.Add(newRow); 
     } 

回答

4

您已通过设置选项StringSplitOptions.RemoveEmptyEntries告诉Split完成您所观察的任务 - 删除空条目。

删除此选项,它将保留空列。

2

如果你有一个空列,那么你应该读一个空字符串,不是一个空字符串。

换句话说....

1,ABC,鞋,, XXX

你得到你得到的结果的原因是因为这一点:StringSplitOptions.RemoveEmptyEntries

3

的问题可能是你与RemoveEmptyEntries选项分割线:

var values = line.Split(new char[] { '\t' }, StringSplitOptions.RemoveEmptyEntries); 

空细胞被取出。省略此参数,它应该工作...

相关问题