我正在开发一个将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
我可以知道我是否遗漏了什么?
答案 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();