【C#】CSVファイルの読み込みと出力方法

C#でのCSVファイルの読み込み方と、出力方法についてまとめます。

【検証環境】.NET Framework 4.7.2

CSVファイルを読み込む

名前、年齢、電話番号、住所、メールアドレス

※上記の様なCSVファイルを読み込み、Listに格納する場合

class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string Tel { get; set; }
    public string Address { get; set; }
    public string Mail { get; set; }
}
IEnumerable<Person> GetListByCSV(string filePath = @"D:testRead.csv")
{
    var people = new List<Person>();
    //1行ずつ配列に格納
    var lines = File.ReadAllLines(filePath);
    //読み込んだ行数分ループ
    foreach (var line in lines)
    {
        //項目をカンマ区切りごとに配列に格納
        var items = line.Split(',');
        //Personオブジェクトの生成
        var person = new Person()
        {
            Name    = items[0],
            Age     = int.Parse(items),
            Tel     = items,
            Address = items,
            Mail    = items,
        };
        people.Add(person);
    }
    return people;
}

CSVファイルを出力する

※読み込むのとは逆に、ListからCSVファイルを出力する場合

void CreateCSV(IEnumerable<Person> people, string filePath = @"D:testCreate.csv")
{
    var sb = new StringBuilder();
    foreach (var person in people)
    {
        var row = $"{person.Name},{person.Age},{person.Tel},{person.Address},{person.Mail}";
        sb.AppendLine(row);
    }
    StreamWriter file = new StreamWriter(filePath, false, Encoding.UTF8);
    file.Write(sb.ToString());
    file.Close();
}

//もしくは
void CreateCSV_Ex(IEnumerable<Person> people, string filePath = @"D:testCreate.csv")
{
    var sb = new StringBuilder();
    foreach (var person in people)
    {
        var wksb = new StringBuilder();
        var newLine = true;
        foreach (var prop in person.GetType().GetProperties())
        {
            wksb.Append((newLine ? "" : ",") + prop.GetValue(person).ToString());
            if (newLine) newLine = false;
        }
        sb.AppendLine(wksb.ToString());
        newLine = true;
    }
    StreamWriter file = new StreamWriter(filePath, false, Encoding.UTF8);
    file.Write(sb.ToString());
    file.Close();
}

拡張ライブラリ

CsvHelper というライブラリを使用することで手軽にCSVファイルの読み書きを行うことが可能です。
使い方はこちらの記事を参照して下さい。

Leave a Reply

Your email address will not be published. Required fields are marked *