C# 从csv文件读取并在.net中处理
我有一个csv文件,其中有两行C# 从csv文件读取并在.net中处理,c#,.net,csv,c#-4.0,c#-3.0,C#,.net,Csv,C# 4.0,C# 3.0,我有一个csv文件,其中有两行 A,1 B,2 我想以以下格式读取此文件并将其转换为以下格式: Name : A, ID: 1 Name : B, ID: 2 我正在使用以下.NETAPI using (FileStream reader = File.OpenRead(@"Data.csv")) // mind the encoding - UTF8 using (TextFieldParser parser = new TextFieldParser(read
A,1
B,2
我想以以下格式读取此文件并将其转换为以下格式:
Name : A, ID: 1
Name : B, ID: 2
我正在使用以下.NETAPI
using (FileStream reader = File.OpenRead(@"Data.csv")) // mind the encoding - UTF8
using (TextFieldParser parser = new TextFieldParser(reader))
{
parser.TrimWhiteSpace = true; // if you want
parser.Delimiters = new[] { "," };
parser.HasFieldsEnclosedInQuotes = true;
while (!parser.EndOfData)
{
string[] line = parser.ReadFields();
List<string> li = line.SelectMany(x => x.Split(',')).ToList();
}
}
我将为此创建struct:
struct ValuePair
{
public string Name { get; set; }
public string Id { get; set; }
public ValuePair(string name, string id) : this()
{
Name = name;
Id = id;
}
public override string ToString()
{
return "Name : " + Name + ", Id : " + Id;
}
}
在您的代码中,您可以使用它:
List<ValuePair> data = new List<ValuePair>();
for(int i = 0; i < li.Count; i += 2)
data.Add(new ValuePair(li[i], li[i + 1]));
列表数据=新列表();
对于(int i=0;i
然后使用
data[i].ToString()代码>您需要自己构建输出字符串
StringBuilder sb = newStringBuilder();
using (FileStream reader = File.OpenRead(@"Data.csv")) // mind the encoding - UTF8
using (TextFieldParser parser = new TextFieldParser(reader))
{
parser.TrimWhiteSpace = true; // if you want
parser.Delimiters = new[] { "," };
parser.HasFieldsEnclosedInQuotes = true;
while (!parser.EndOfData)
{
string[] line = parser.ReadFields();
List<string> li = line.SelectMany(x => x.Split(',')).ToList();
sb.AppendLine(String.Format("Name: {0}, ID: {1}", li[0],li[1]));
}
}
MessageBox.Show(sb.ToString());
如果你不这样做,那么从新的格式回读可能是不确定的。
你应该考虑使用库来读取和处理CSV文件。解析器是什么?<代码> RealFieldSd();<代码>在(例如)解析第一行时返回?因此,如果TextFieldParser
类为您提供StreamReader.ReadLine()
?此函数ReadFields()的确切结果,那么它的优点是什么;将以A、1的形式给出输出。读取数据不是这里的问题,它只是数据的后处理
StringBuilder sb = newStringBuilder();
using (FileStream reader = File.OpenRead(@"Data.csv")) // mind the encoding - UTF8
using (TextFieldParser parser = new TextFieldParser(reader))
{
parser.TrimWhiteSpace = true; // if you want
parser.Delimiters = new[] { "," };
parser.HasFieldsEnclosedInQuotes = true;
while (!parser.EndOfData)
{
string[] line = parser.ReadFields();
List<string> li = line.SelectMany(x => x.Split(',')).ToList();
sb.AppendLine(String.Format("Name: {0}, ID: {1}", li[0],li[1]));
}
}
MessageBox.Show(sb.ToString());
Name: "FirstValue", ID:1
Name: "Sec""ond""Value", ID:2