【C#】シンプルなライブラリ「CSV」を使ってCSVを出力する

ネコニウム研究所

PCを利用したモノづくりに関連する情報や超個人的なナレッジを掲載するブログ

【C#】シンプルなライブラリ「CSV」を使ってCSVを出力する

2023-1-11 | ,

C#でシンプルなライブラリ「CSV」を使ってCSVを出力したい!

概要

今回の記事では、C#でシンプルなライブラリ「CSV」を使ってCSVを出力する手順を掲載する。

C#でCSVをごにょごにょするのに「CsvHelper」というライブラリが有名なんだけども、今回は「CsvHelper」のように多機能なライブラリではなく、シンプルで簡単に使える「CSV」というライブラリを使ってみる。

ライブラリの説明文。

Really simple csv library

本当にシンプルなCSVライブラリ!

仕様書

  • .NET 6
  • CSV 2.0.93

手順書

string型の二次元配列からとstring[]List型からCSVに出力する2パターンの例を挙げる。

まずはじめに「NuGetパッケージの管理」を使うか「PM」でInstall-Package Csvを実行して、プロジェクトにライブラリを追加しておく。

string型の二次元配列からCSVを出力する

string型の二次元配列からCSVを出力するコードのサンプル。

using System;
using System.IO;
using Csv;

internal class Program
{
    static void Main(string[] args)
    {
        var header = new string[] { "ID", "Name", "Department", "Localtion" };

        var lines = new string[][]
        {
            new[] { "1", "ジョバンニ", "総務部", "東京" },
            new[] { "2", "カムパネルラ", "営業部", "東京" },
            new[] { "3", "ザネリ", "開発部", "大阪" },
            new[] { "4", "マルソ", "製造部", "仙台" }
        };

        string txtcsv = CsvWriter.WriteToText(header, lines);
        File.WriteAllText("employee.csv", txtcsv);
    }
}

CSVのヘッダーはstring型の配列で設定する。サンプルのvar header = new string[] { "ID", "Name", "Department", "Localtion" };の部分。

CsvWriter.WriteToTextにヘッダー部とデータ部の変数を引数で渡すとCSVのフォーマットに変換されたstring型のデータが返ってくる。

string[]List型からCSVを出力する

string[]List型からCSVを出力するコードのサンプル。

using System;
using System.IO;
using Csv;

internal class Program
{
    static void Main(string[] args)
    {
        var header = new string[] { "ID", "Name", "Department", "Localtion" };

        var list = new List<string[]>();

        list.Add(
            new string[]
            {
                "1", "ジョバンニ", "総務部", "東京"
            }
        );

        list.Add(
            new string[]
            {
                "2", "カムパネルラ", "営業部", "東京"
            }
        );

        list.Add(
            new string[]
            {
                "3", "ザネリ", "開発部", "大阪"
            }
        );

        list.Add(
            new string[]
            {
                "4", "マルソ", "製造部", "仙台"
            }
        );

        string txtcsv = CsvWriter.WriteToText(header, list);
        File.WriteAllText("employee.csv", txtcsv);
    }
}

このサンプルでは、CsvWriter.WriteToTextにデータ部のデータとしてstring[]List型の変数を引数で渡してる。

string[]List型を使えると何が良いかというと、行数が可変なデータの処理が楽になる。

例えば、別のフォーマットのデータを読み出してforeachの中でCSVに変換していく場合などはstring[]List型を使った方が実装しやすい。(と思う)

出力結果

サンプルのコードを実行すると実行ファイルのあるディレクトリの中に下記の内容のemployee.csvが出力される。

ID,Name,Department,Localtion
1,ジョバンニ,総務部,東京
2,カムパネルラ,営業部,東京
3,ザネリ,開発部,大阪
4,マルソ,製造部,仙台

まとめ(感想文)

入出力にオプションを設定することもできるので、興味のある人はGitHubのライブラリのページを見てみてね!