Morning Girl

Windows, C#, .NET, Dynamics CRM etc..

【C#】【CsvHelper】CsvHelperを利用したCsvファイルの生成

CsvHelperの続きです。

今度は単純にCsvファイルの生成方法を確認してみました。

joshclose.github.io

概要

csvファイルの生成はFile.Createによって行ってしまいます。

CreateTextの戻り値のStreamWriterを利用して、TextWriterオブジェクトを生成。

TextWriterオブジェクトをCsvHelperのCsvWriterに渡して、操作を行います。

CsvHelper.CsvWriter

Csvファイルへの書き込みに使うのは、[WriterRecord]もしくは[WriteRecords]くらいかなぁと思います。

[WriteRecords]であれば、データ格納クラスとIEnumerableで受け取り可能なListなどを利用して、一括でCsvファイルを格納できます。

[WriteRecord]の場合、NextRecordメソッドも利用しつつ、foreachで回す形になるので、一括でデータの取得が完了していれば、前者のほうが気楽かなぁと思いました。

今回は、全社の[WriteRecords]を利用したコードを記述したいと思います。

コード

Bookというデータ格納クラスをListに格納し、[WriteRecords]を用いて一括で生成しました。 例外処理とかは特に入れていませんので。

using System.IO;
using System.Collections.Generic;
using CsvHelper;

namespace MyProject.CsvHelperHello
{
    class Writer
    {
        public static void WriterMain()
        {
            using (TextWriter textWriter = File.CreateText(@"C:\csv\csvhelper.csv"))
            {
                var csvWriter = new CsvWriter(textWriter);
                
                List<Book> list = new List<Book>();

                for (int i = 0; i < 10; i++)
                {
                    list.Add(
                        new Books()
                        {
                            name = "Morning Girl " + i,
                            id = i.ToString()
                        }
                    );
                }
                
                csvWriter.WriteRecords(list);
            }
        }
    }

    public class Book
    {
        public string name {get; set;}
        public string id {get; set;}
    }
}

生成されたCSVファイル

以下のようなCsvファイルが生成されました。

name,id
Morning Girl 0,0
Morning Girl 1,1
Morning Girl 2,2
Morning Girl 3,3
Morning Girl 4,4
Morning Girl 5,5
Morning Girl 6,6
Morning Girl 7,7
Morning Girl 8,8
Morning Girl 9,9

雑記

データ格納クラスとそのマッピングの作りこみ次第で、取得したデータを処理するときのしやすさが変わるだろうなぁと。

Dynamics CRMのEntityCollectionとかを格納しようとしたら、ReferenceやOptionsetでいろいろと調整が必要になるでしょうねぇ。