这个问题已被多次提出不同的输入,所以我想把它与我的要求一起重新发布。
我有一个CSV文件,其中包含以下给出的方式的字符串字段。
idnum,name1, name2,groupid
idnum,name1, name2,groupid
idnum,name1, name2,groupid
示例
s001,sahil,payap,gid0
s002,Amir,Khan,gid02
d003,hrithik,roshan,gid03
我有二维字符串数组。我想逐行读到我的二维数组。 阅读时应该是这样的
arr[0][0]=s001
arr[0][1]=name1
arr[0][2]=name2
arr[0][3]=gid01
arr[1][0]=s002
arr[1][1]=Amir
arr[1][2]=Khan
arr[1][3]=gid04
文件中有40条记录,应该读到文件末尾。 我需要在C#
中实现这一点任何代码示例或任何解释都会有很大的帮助。
我对csv文件处理一无所知所以请不要问你尝试了什么,至少如果你能给我一个代码样本只读一个变量的字符串那将是一个很好的帮助。 请不要再寻求其他解决方案。 感谢。
答案 0 :(得分:3)
必须按行读取文件。必须使用String.Split
分隔每一行。然后必须使用Trim
修剪生成的字符串,最后必须写入当前行的相应列。但是我完全赞同上述评论;更方便的是使用一些名为Person
的类或结构,然后解析为List<Person>
。
阅读可按如下方式进行:
String line = String.Empty;
System.IO.StreamReader file = new System.IO.StreamReader("c:\\file.txt");
while((line = file.ReadLine()) != null)
{
String[] parts_of_line = line.Split(',')
for ( int i = 0; i < parts_of_line.Length; i++ )
parts_of_line[i] = parts_of_line[i].Trim();
// do with the parts of the line whatever you like
}
答案 1 :(得分:3)
以您建议的方式阅读csv文件的最简单方法可能是:
var rows = File.ReadAllLines("myfile.csv").Select(l => l.Split(',').ToArray()).ToArray();
然后:
Console.WriteLine(rows[0][0]); // Will output s001
Console.WriteLine(rows[0][1]); // Will output sahil
Console.WriteLine(rows[0][2]); // Will output payap
Console.WriteLine(rows[0][3]); // Will output gid0
Console.WriteLine(rows[1][0]); // Will output s002
Console.WriteLine(rows[2][0]); // Will output d003
答案 2 :(得分:0)
您可以使用CsvHelper library:
执行此操作const string Csv = @"s001,sahil,payap,gid0
s002,Amir,Khan,gid02
d003,hrithik,roshan,gid03";
var rows = new List<string[]>();
string[] row;
using (var stringReader = new StringReader(Csv))
using (var parser = new CsvParser(stringReader))
while ((row = parser.Read()) != null)
{
rows.Add(row);
}
Console.WriteLine(rows[0][0]); // Will output s001
Console.WriteLine(rows[0][1]); // Will output sahil
Console.WriteLine(rows[0][2]); // Will output payap
Console.WriteLine(rows[0][3]); // Will output gid0
Console.WriteLine(rows[1][0]); // Will output s002
Console.WriteLine(rows[2][0]); // Will output d003
有关一个工作示例,请查看此.NET小提琴:http://dotnetfiddle.net/PLPXo8
如果您想直接从文件中阅读,可以这样做:
var rows = new List<string[]>();
string[] row;
using (var parser = new CsvParser(File.OpenText(@"c:\test.csv")))
while ((row = parser.Read()) != null)
{
rows.Add(row);
}