【问题标题】:Fill a Data table from a text file从文本文件填充数据表
【发布时间】:2012-11-19 09:11:21
【问题描述】:

我有这个代码块,它读取一个文本文件 [制表符分隔] 并返回一个数据表。但问题是它将文件或记录的第一行视为标题,并将其余行显示为记录,将记录数减去 - 1 所以现在我希望代码将文件的所有内容作为记录读取。

代码如下:

streamReader reader = new streamReader (filePath);
string line = reader.readLine();
Datatable dt = new Datatable ();
DataRow row;
string[] value = line.Split('\t');

foreach(string dc in value)
{
 dt.columns.add(New DataColumn(dc));
}

while(!reader.endofStream)
 {
  value = reader.ReadLine().split('\t');

  if (value.Length == dt.Columns.Count)
 {
  row = dt.NewRow();
  row.ItemArray = value;
  dt.Rows.Add(row);
 }

 }

 return dt;

当我尝试删除时

foreach(string dc in value)
{
 dt.columns.add(New DataColumn(dc));
}

以及所有依赖它的行代码,dt 什么都不返回。

我该如何解决?

【问题讨论】:

    标签: c# file datatable


    【解决方案1】:

    如果您知道没有标题,我假设您也不知道列的名称,是吗?然后您需要添加“匿名”列:

    DataTable dt = new DataTable();
    while (reader.Peek() >= 0)
    {
        string line = reader.ReadLine();
        string[] fields = line.Split('\t');
        if (dt.Columns.Count == 0)
        {
            foreach (string field in fields)
            {
                // will add default names like "Column1", "Column2", and so on
                dt.Columns.Add(); 
            }
        }
        dt.Rows.Add(fields);
    }
    

    【讨论】:

    • 不,它没有。如果文件为空dt 为空DataTable。如果文件包含行,则 DataTable 有 n DataColumns 其中n 是第一行中的字段数。
    【解决方案2】:
    DataTable dt = new DataTable();
    var lines = File.ReadAllLines(strPath).ToList();
    dt.Columns.AddRange(lines.First().Split(new char[] { '\t' }).Select(col => new DataColumn(col)).ToArray());
    lines.RemoveAt(0);
    lines.Select(x => x.Split(new char[] { '\t' })).ToList().ForEach(row => dt.Rows.Add(row));
    

    将此用于测试数据

    List<string> lines = new List<string>();
    lines.Add("Col1\tCol2\tCol3");
    lines.Add("aaa\tbbb\tccc");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-15
      相关资源
      最近更新 更多