MENU

C#でCSVを操作する

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ファイルを読み込んでいます:

  1. StreamReaderオブジェクトを作成してCSVファイルを開きます。
  2. ReadLine()メソッドを使って1行ずつ読み込みます。
  3. 各行をSplit(',')メソッドでカンマで区切り、フィールドの配列に変換します。
  4. 各フィールドを表示します。

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ファイルを書き込んでいます:

  1. StreamWriterオブジェクトを作成して新しいCSVファイルを開きます。
  2. WriteLine()メソッドを使って各行を書き込みます。
  3. カンマで区切られた文字列として各フィールドを書き込みます。

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ファイルを操作することは、StreamReaderStreamWriterクラスを使用することで比較的簡単に行えます。基本的な読み書きの方法を押さえておけば、様々なCSV操作のタスクに対応できるでしょう。

ただし、より複雑なCSV操作(例:引用符で囲まれたフィールドの処理、エスケープ文字の処理など)が必要な場合は、CsvHelperなどのサードパーティライブラリの使用を検討するのも良いでしょう。

CSVファイルの操作は、データ処理やシステム間のデータ交換など、多くの場面で役立つスキルです。ここで紹介した基本を元に、実際のプロジェクトでC#を使ったCSV操作にチャレンジしてみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次