C#

【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ファイルの読み書きを行うことが可能です。
使い方はこちらの記事を参照して下さい。

エンジニアの転職ならこれ!

【第二新卒向け】マイナビジョブ20's

マイナビジョブ20'sは、20代・第二新卒・既卒向けの転職エージェントです。

▼こんな方におすすめ
・はじめて転職しようと思っている
・転職できるだけのスキルが自分にあるか不安
・手厚いサポートを受けたい

【フリーランス向け】 Midworks

Midworksは豊富な案件と「フリーランス」と「正社員」の良いとこ取りをした働き方を実現する手厚い保障が特徴です。

▼こんな方におすすめ
・現在正社員でフリーランスになろうか悩んでいる
・フリーランスとして働いているが、先行きが不安がある  (安定的な案件確保や保障など)
・自分の市場価値を知りたい、見合った案件で参画したい
・今後のキャリアビジョンを踏まえて案件を選びたい