是否可以從CSV文件創建我自己的類的列表?如何將CSV文件讀取到列表<myClass>?
該文件例如看起來像:
ID;NAME
1;Foo
2;Bar
然後我有這樣一個類:
class MyClass
{
public int id { get; set; }
public string name { get; set; }
}
是有可能產生這個類的一個列表出來的CVS的文件?也許有一些庫
是否可以從CSV文件創建我自己的類的列表?如何將CSV文件讀取到列表<myClass>?
該文件例如看起來像:
ID;NAME
1;Foo
2;Bar
然後我有這樣一個類:
class MyClass
{
public int id { get; set; }
public string name { get; set; }
}
是有可能產生這個類的一個列表出來的CVS的文件?也許有一些庫
您可以使用CSV解析器,如FileHelpers
或FastCSV。如果你不希望使用第三方庫你可能看看內置TextFieldParser
類可以這樣使用:
public IEnumerable<MyClass> Parse(string path)
{
using (TextFieldParser parser = new TextFieldParser(path))
{
parser.CommentTokens = new string[] { "#" };
parser.SetDelimiters(new string[] { ";" });
parser.HasFieldsEnclosedInQuotes = true;
// Skip over header line.
parser.ReadLine();
while (!parser.EndOfData)
{
string[] fields = parser.ReadFields();
yield return new MyClass()
{
id = fields[0],
name = fields[1]
};
}
}
}
然後:
List<MyClass> list = Parse("data.csv").ToList();
但從未,請never roll your own CSV parser
其他人建議你在這裏作爲你的問題的答案。
永不言敗。如果你知道你的文件結構,也許寫一些小東西並不是最壞的東西。 – gsharp 2013-02-24 16:13:19
你知道文件結構。這是CSV :-)'也許寫點小東西並不是最壞的東西。「從這裏引用(http://secretgeek.net/csv_trouble.asp):'現在是八個星期以來,你說:「我知道!我只會使用String.Split(...」'。 – 2013-02-24 16:14:58
哈哈好吧:)我我也是FileHelpers的粉絲。然而,在FileHelpers在這裏我分裂和分析我自己和那些東西仍在運行;-) – gsharp 2013-02-24 16:23:13
http://stackoverflow.com/questions/5541503/parsing-a-csv-file-with-c-ignoring-thousand-separators/5541553#5541553 – kenny 2013-02-24 16:07:56