【问题标题】:C# - Write to a datatable from delimited stringC# - 从分隔字符串写入数据表
【发布时间】:2015-01-31 15:35:18
【问题描述】:

我有一个类似这样的字符串:

"X","Y","Z"
"X2","Y2","Z2"

即,多行由包含多个不同字符串值的新行分隔,以逗号分隔。

我如何创建一个函数来将这些值输入到这样的数据表中:

"X" "Y" "Z"
"X2" "Y2" "Z2"

对于我的字符串中的任意数量的行和列?

这是我目前所拥有的:

public static DataTable writeToDT(string data) //Write to datatable from string
    {
        DataTable dataTable = new DataTable();
        foreach (string header in csvHeader)
        {
            dataTable.Columns.Add(header);
        }
        using (StringReader reader = new StringReader(data))
        {
            string line;
            while ((line = reader.ReadLine()) != null)
            {
                DataRow dataRow = dataTable.NewRow();
            }
        }
        return dataTable;
    }

其中csvheader 是一个已经填充了我数据中的标题的数组。
我相信这会创建一个包含适量行和列的空数据表,但我不确定如何用我拥有的字符串数据填充它。

提前致谢。

【问题讨论】:

标签: c# csv datatable delimited


【解决方案1】:

这样的事情应该可以工作。解析 CSV 是一个已解决的问题,using Microsoft.VisualBasic.FileIO; 命名空间中的TextFieldParser 类(添加对Microsoft.VisualBasic 的引用)可以为您做到这一点。

public static DataTable WriteToDataTable(string data)
{
    DataTable dataTable = new DataTable();
    foreach (var header in csvHeader)
        dataTable.Columns.Add(header);

    using (var reader = new StringReader(data))
    {
        TextFieldParser csvParser = new TextFieldParser(reader) { HasFieldsEnclosedInQuotes = true, Delimiters = new string[] { "," } };

        while (!csvParser.EndOfData)
        {
            var dataTableRow = dataTable.NewRow();
            dataTableRow.ItemArray = csvParser.ReadFields();
            dataTable.Rows.Add(dataTableRow);
        }
    }
    return dataTable;
}

【讨论】:

  • 完美,谢谢!如果其他人有这个问题,请注意我必须在 PROJECT > Add Reference > Assemblies > Framework 下启用 Microsoft.VisualBasic.FileIO。
猜你喜欢
  • 2014-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-17
  • 2017-02-03
  • 1970-01-01
  • 2013-04-18
  • 1970-01-01
相关资源
最近更新 更多