CSVファイルは、データを扱う上で非常によく使われる形式です。エクセルで作成したデータをCSV形式で保存したり、システム間でデータをやり取りする際にCSVを使ったりすることが多いでしょう。C#プログラミングにおいても、CSVファイルの読み書きは頻繁に行われる操作の一つです。この記事では、C#を使ってCSVファイルを操作する基本的な方法を解説します。
CSVファイルの読み込み
まずは、CSVファイルを読み込む方法から見ていきましょう。C#では、System.IO
名前空間のStreamReader
クラスを使用してCSVファイルを簡単に読み込むことができます。
以下は、CSVファイルを1行ずつ読み込み、各フィールドを表示するサンプルコードです:
using System;
using System.IO;
class CsvReader
{
static void Main()
{
string filePath = "sample.csv";
try
{
using (StreamReader reader = new StreamReader(filePath))
{
string line;
while ((line = reader.ReadLine()) != null)
{
string[] fields = line.Split(',');
foreach (string field in fields)
{
Console.Write($"{field.Trim()} | ");
}
Console.WriteLine();
}
}
}
catch (Exception e)
{
Console.WriteLine($"ファイルの読み込み中にエラーが発生しました: {e.Message}");
}
}
}
このコードでは、以下の手順でCSVファイルを読み込んでいます:
StreamReader
オブジェクトを作成してCSVファイルを開きます。ReadLine()
メソッドを使って1行ずつ読み込みます。- 各行を
Split(',')
メソッドでカンマで区切り、フィールドの配列に変換します。 - 各フィールドを表示します。
CSVファイルの書き込み
次に、CSVファイルを書き込む方法を見てみましょう。書き込みにはSystem.IO
名前空間のStreamWriter
クラスを使用します。
以下は、簡単なデータをCSVファイルに書き込むサンプルコードです:
using System;
using System.IO;
class CsvWriter
{
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 e)
{
Console.WriteLine($"ファイルの書き込み中にエラーが発生しました: {e.Message}");
}
}
}
このコードでは、以下の手順でCSVファイルを書き込んでいます:
StreamWriter
オブジェクトを作成して新しいCSVファイルを開きます。WriteLine()
メソッドを使って各行を書き込みます。- カンマで区切られた文字列として各フィールドを書き込みます。
CSVデータの操作
実際のアプリケーションでは、CSVデータを読み込んで処理し、結果を別のCSVファイルに書き出すことがよくあります。以下は、入力CSVファイルから特定の条件に合うデータを抽出し、新しいCSVファイルに書き出す例です:
using System;
using System.IO;
class CsvProcessor
{
static void Main()
{
string inputFile = "input.csv";
string outputFile = "output.csv";
try
{
using (StreamReader reader = new StreamReader(inputFile))
using (StreamWriter writer = new StreamWriter(outputFile))
{
// ヘッダーの処理
string header = reader.ReadLine();
writer.WriteLine(header);
string line;
while ((line = reader.ReadLine()) != null)
{
string[] fields = line.Split(',');
if (fields.Length >= 2 && int.TryParse(fields[1], out int age))
{
// 年齢が30以上のデータのみを書き出す
if (age >= 30)
{
writer.WriteLine(line);
}
}
}
}
Console.WriteLine("CSVの処理が完了しました。");
}
catch (Exception e)
{
Console.WriteLine($"エラーが発生しました: {e.Message}");
}
}
}
このコードでは、入力CSVファイルから年齢が30以上のデータのみを抽出して、新しいCSVファイルに書き出しています。
まとめ
C#でCSVファイルを操作することは、StreamReader
とStreamWriter
クラスを使用することで比較的簡単に行えます。基本的な読み書きの方法を押さえておけば、様々なCSV操作のタスクに対応できるでしょう。
ただし、より複雑なCSV操作(例:引用符で囲まれたフィールドの処理、エスケープ文字の処理など)が必要な場合は、CsvHelperなどのサードパーティライブラリの使用を検討するのも良いでしょう。
CSVファイルの操作は、データ処理やシステム間のデータ交換など、多くの場面で役立つスキルです。ここで紹介した基本を元に、実際のプロジェクトでC#を使ったCSV操作にチャレンジしてみてください。
コメント