プログラミングをしていると、データをCSV(Comma-Separated Values)形式で出力する必要が出てくることがあります。CSVは、Excel等の表計算ソフトで簡単に開けるため、データ共有やレポート作成によく使われます。この記事では、C#を使ってCSVファイルを出力する簡単な方法を、初心者の方にも分かりやすく解説します。
CSVファイル出力の基本
C#でCSVファイルを出力する最も簡単な方法は、System.IO
名前空間のStreamWriter
クラスを使用することです。以下に、基本的な手順を示します。
StreamWriter
オブジェクトを作成し、出力先のファイルを指定します。- データをカンマ区切りで文字列として書き込みます。
- 各行の終わりに改行を入れます。
それでは、具体的なコード例を見てみましょう。
using System;
using System.IO;
class Program
{
static void Main()
{
string filePath = "output.csv";
try
{
using (StreamWriter writer = new StreamWriter(filePath))
{
// ヘッダー行を書き込む
writer.WriteLine("名前,年齢,都市");
// データ行を書き込む
writer.WriteLine("山田太郎,30,東京");
writer.WriteLine("鈴木花子,25,大阪");
writer.WriteLine("佐藤次郎,35,名古屋");
}
Console.WriteLine("CSVファイルの作成が完了しました。");
}
catch (Exception ex)
{
Console.WriteLine($"エラーが発生しました: {ex.Message}");
}
}
}
このコードを実行すると、カレントディレクトリに output.csv
というファイルが作成されます。ファイルの内容は以下のようになります:
名前,年齢,都市
山田太郎,30,東京
鈴木花子,25,大阪
佐藤次郎,35,名古屋
データをループで書き込む
実際のアプリケーションでは、データをリストやクラスのコレクションとして保持していることが多いでしょう。そのような場合、ループを使ってデータを書き込むことができます。以下に例を示します。
using System;
using System.Collections.Generic;
using System.IO;
class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string City { get; set; }
}
class Program
{
static void Main()
{
List<Person> people = new List<Person>
{
new Person { Name = "山田太郎", Age = 30, City = "東京" },
new Person { Name = "鈴木花子", Age = 25, City = "大阪" },
new Person { Name = "佐藤次郎", Age = 35, City = "名古屋" }
};
string filePath = "people.csv";
try
{
using (StreamWriter writer = new StreamWriter(filePath))
{
// ヘッダー行を書き込む
writer.WriteLine("名前,年齢,都市");
// データ行を書き込む
foreach (var person in people)
{
writer.WriteLine($"{person.Name},{person.Age},{person.City}");
}
}
Console.WriteLine("CSVファイルの作成が完了しました。");
}
catch (Exception ex)
{
Console.WriteLine($"エラーが発生しました: {ex.Message}");
}
}
}
このコードでは、Person
クラスのリストを作成し、それをループして各人物のデータをCSVファイルに書き込んでいます。
注意点
- 文字エンコーディング: 日本語を含むCSVファイルを作成する場合、適切な文字エンコーディングを指定することが重要です。例えば、Shift-JISを使用する場合は以下のようにします:
using (StreamWriter writer = new StreamWriter(filePath, false, Encoding.GetEncoding("shift_jis")))
2.カンマを含むデータの処理: データ自体にカンマが含まれる場合、そのフィールドをダブルクォーテーションで囲む必要があります。
3.大量のデータ処理: 大量のデータを書き込む場合は、StringBuilder
を使用してメモリ効率を向上させることを検討してください。
まとめ
C#でCSVファイルを出力する基本的な方法を学びました。StreamWriter
クラスを使用することで、簡単にCSVファイルを作成できることが分かりました。実際のプロジェクトでは、データの性質や量に応じて適切な方法を選択してください。
CSVファイルの出力は、データ処理やレポート作成など、様々な場面で役立つスキルです。ここで紹介した方法を基礎として、より複雑なCSV出力にも挑戦してみてください。
コメント