第一行未从csv导入DataTable

时间:2016-10-16 00:32:35

标签: c# csv datatable

我正在开发一个将csv导出到DataTable的应用程序,由于某些原因,在标题行之后的csv中没有填充第一行的DataTable

我尝试过以下代码

Regex r = new Regex(",(?=(?:[^\"]*\"[^\"]*\")*(?![^\"]*\"))");

            StreamReader sr = new StreamReader(fileName);
            string[] headers = sr.ReadLine().Split(',');
            foreach (string header in headers)
            {
                dt.Columns.Add(header);
            }

            line = sr.ReadLine();
            strArray = r.Split(line);         


            while ((line = sr.ReadLine()) != null)
            {
                row = dt.NewRow();


                row.ItemArray = r.Split(line);
                dt.Rows.Add(row);
            }


            sr.Dispose();

csv文件

FirstName,LastName,Address
Sally, Whittaker,Houston
Belinda, Jameson,Austin
Jeff, Smith,Seattle

标题导出得很好,但标题后面的行不按如下方式上传 enter image description here

我可以知道我是否遗漏了什么?

3 个答案:

答案 0 :(得分:1)

这是一个额外的ReadLine您正在阅读下面的一行,但最后没有使用它。

            line = sr.ReadLine();
            strArray = r.Split(line); 

答案 1 :(得分:1)

在" while"之前删除这两行。循环:

       line = sr.ReadLine();
       strArray = r.Split(line);

不仅两者都没用,第一个也是你问题的原因。

'希望这会有所帮助。

答案 2 :(得分:1)

在while循环之外删除ReadLine(),因为它首先读取第一行然后在第一行之后发生while循环读取。

line = sr.ReadLine();