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のライブラリのページを見てみてね!