我正在尝试从制表符分隔的文本文件创建数据表。我很容易从文件中获取值。问题是,当文本文件中有空列时,数据表中不会创建相同的空列而是在空列区域中替换下一个非空列内容
textfile中的数据格式
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);
}
答案 0 :(得分:4)
您告诉Split
通过设置选项StringSplitOptions.RemoveEmptyEntries
来完成您所观察到的内容 - 它会删除空条目。
删除此选项,它将保留空列。
答案 1 :(得分:3)
问题可能是您使用RemoveEmptyEntries
选项分割了该行:
var values = line.Split(new char[] { '\t' }, StringSplitOptions.RemoveEmptyEntries);
删除空单元格。省略这个参数,它应该有用......
答案 2 :(得分:2)
如果您有一个空列,那么您应该读取一个空字符串,而不是空字符串。
换句话说......
1,abc,shoe ,, xxx
您获得结果的原因是: StringSplitOptions.RemoveEmptyEntries