【发布时间】:2017-09-18 16:41:10
【问题描述】:
用 c# 语言制作的 CSV 阅读器。它工作正常,但我无法忽略双引号行值之间的逗号(',')。
示例: “aa”、“aa,bb”、“cc”
读起来像
Col1 Col2 Col3 Col4
aa aa bb cc
而不是这个,它应该读起来像,
Col1 Col2 Col3
aa aabb cc
这是我的代码:
public void LoadFile(String path)
{
Table.Rows.Clear();
Table.Columns.Clear();
StreamReader file = File.OpenText(path);
String[] header = file.ReadLine().Split(',');
for (int i = 0; i < Table.ColumnCount; i++)
{
Table.Columns[i].Name = "Col " + i;}
String row = "";
while ((row = file.ReadLine()) != null)
{
Table.Rows.Add(row.Split(','));
}
file.Close();
}
}
【问题讨论】:
-
您可能需要考虑寻找第 3 方 CVS 阅读器,因为大多数人会为您处理此问题。
-
有很多 CSV 解析工具,例如
CSVHelper可以为您完成所有这些工作 -
我可以从外部 CSV 阅读器那里获得帮助,但尝试添加一个条件以便它可以工作。我使用流阅读器做到了。我正试图让它作为一个应用程序工作。
-
正如您所发现的,它比仅仅用逗号分割更复杂。如果您要重新创建轮子,您可能需要一次读取一个字符并设置/清除指示您是否在 dbl 报价内的标志。有很多类似的问题在等着你。
-
对于我自己的非常简单的 CSV 解析器,我使用了状态机。 “在一个条目内”状态处理逗号与“移动到下一个条目”状态不同。
标签: c# csv streamreader