カテゴリ: C# 更新日: 2025/11/11

C#でCSVファイルを読み書きする基本と応用(Split・StringBuilder)

C#でCSVファイルを読み書きする基本と応用(Split・StringBuilder)
C#でCSVファイルを読み書きする基本と応用(Split・StringBuilder)

先生と生徒の会話形式で理解しよう

生徒

「先生、C#でCSVファイルを読み込んだり書き込んだりする方法を知りたいです。」

先生

「いいですね。CSVファイルは、データを表形式で扱うときによく使われるファイル形式ですよ。」

生徒

「CSVってエクセルでも開けるやつですか?」

先生

「その通りです。C#でも簡単に読み書きできるので、基本から応用まで一緒に見ていきましょう。」

1. CSVファイルとは?

1. CSVファイルとは?
1. CSVファイルとは?

CSVファイルとは、「Comma Separated Values(カンマ区切り値)」の略で、文字どおり「カンマで区切られたデータ」を保存するファイル形式です。拡張子は「.csv」で、1行が1つのレコード(データのまとまり)を表し、カンマで区切られた部分がそれぞれの項目になります。

例えば、次のような内容です。


名前,年齢,職業
田中太郎,28,エンジニア
鈴木花子,24,デザイナー

このように、Excelでも開けるテキストファイル形式なので、C#で扱うときにも非常に便利です。

2. C#でCSVファイルを読み込む方法(Splitを使う)

2. C#でCSVファイルを読み込む方法(Splitを使う)
2. C#でCSVファイルを読み込む方法(Splitを使う)

CSVファイルを読み込むには、まずSystem.IO名前空間を使います。C#ではFile.ReadAllLinesメソッドで1行ずつ読み込み、Splitメソッドでカンマごとに分割します。

Split(スプリット)とは、「文字列を区切る」メソッドのことです。たとえば、「田中,28,エンジニア」という1行を「,」で分けることで、名前・年齢・職業をそれぞれ別のデータとして扱えます。


using System;
using System.IO;

class Program
{
    static void Main()
    {
        string filePath = "data.csv";

        // ファイルを1行ずつ読み込む
        string[] lines = File.ReadAllLines(filePath);

        foreach (string line in lines)
        {
            // カンマで区切る
            string[] parts = line.Split(',');

            // 配列の各要素を出力
            Console.WriteLine($"名前: {parts[0]}, 年齢: {parts[1]}, 職業: {parts[2]}");
        }
    }
}

名前: 田中太郎, 年齢: 28, 職業: エンジニア
名前: 鈴木花子, 年齢: 24, 職業: デザイナー

このように、Splitを使うことで、CSVの1行を項目ごとに分解して扱うことができます。

3. C#でCSVファイルに書き込む方法(StringBuilderを使う)

3. C#でCSVファイルに書き込む方法(StringBuilderを使う)
3. C#でCSVファイルに書き込む方法(StringBuilderを使う)

次に、C#でCSVファイルにデータを書き込む方法を見てみましょう。複数行の文字列をまとめて作るときには、StringBuilder(ストリングビルダー)クラスを使うのが便利です。

StringBuilderとは、文字列を「少しずつ作り上げる」ためのクラスです。通常の文字列連結よりも効率が良く、CSVのように行を追加していく処理に向いています。


using System;
using System.IO;
using System.Text;

class Program
{
    static void Main()
    {
        string filePath = "output.csv";
        StringBuilder sb = new StringBuilder();

        // ヘッダー行
        sb.AppendLine("名前,年齢,職業");

        // データ行を追加
        sb.AppendLine("田中太郎,28,エンジニア");
        sb.AppendLine("鈴木花子,24,デザイナー");

        // ファイルに書き込む
        File.WriteAllText(filePath, sb.ToString(), Encoding.UTF8);

        Console.WriteLine("CSVファイルを書き出しました。");
    }
}

CSVファイルを書き出しました。

このプログラムを実行すると、カレントディレクトリ(プログラムを実行している場所)に「output.csv」というファイルが作成されます。

4. 読み書きを組み合わせてCSVを加工する応用例

4. 読み書きを組み合わせてCSVを加工する応用例
4. 読み書きを組み合わせてCSVを加工する応用例

ここまでの方法を組み合わせれば、CSVファイルを読み込み、加工して別のCSVファイルに出力することも簡単にできます。


using System;
using System.IO;
using System.Text;

class Program
{
    static void Main()
    {
        string inputPath = "data.csv";
        string outputPath = "result.csv";

        string[] lines = File.ReadAllLines(inputPath);
        StringBuilder sb = new StringBuilder();

        foreach (string line in lines)
        {
            string[] parts = line.Split(',');
            // 年齢に「歳」をつけて新しいCSVを作る
            sb.AppendLine($"{parts[0]},{parts[1]}歳,{parts[2]}");
        }

        File.WriteAllText(outputPath, sb.ToString(), Encoding.UTF8);
        Console.WriteLine("加工後のCSVを出力しました。");
    }
}

加工後のCSVを出力しました。

このように、C#ではわずか数行のコードでCSVの読み書きやデータ加工ができます。SplitStringBuilderを組み合わせることで、業務でよく使うデータ処理を効率的に自動化できるようになります。

5. CSV操作で注意すべきポイント

5. CSV操作で注意すべきポイント
5. CSV操作で注意すべきポイント

CSVファイルを扱うときに注意したいのは、「カンマがデータの中に含まれている場合」です。たとえば、会社名に「株式会社,東京支社」とカンマが入っていると、正しく分割できなくなることがあります。

その場合は、ダブルクォーテーション(")で囲むなどの対策が必要ですが、基本的な操作ではまずSplitStringBuilderの使い方をマスターしておけば十分です。

6. まとめ:CSVはC#で簡単に扱える!

6. まとめ:CSVはC#で簡単に扱える!
6. まとめ:CSVはC#で簡単に扱える!

C#のファイル操作の中でも、CSVは非常に利用頻度が高いです。Splitを使えば文字列を分解でき、StringBuilderを使えば効率よく出力できます。プログラミング未経験の方でも、データを扱う仕組みを体験しながら学べるので、ぜひ練習してみてください。

カテゴリの一覧へ
新着記事
C#のコーディング規約(C# Coding Conventions)とは?読みやすいコードを書くための基本ルール
C#のデストラクタ(ファイナライザ)の使い方と注意点をやさしく解説!
COBOL資産のバージョン管理とは?初心者でもわかる保守と管理の基本
COBOLのUSAGE句(DISPLAY・COMPなど)をやさしく解説!初心者でもわかる効率化の基本
人気記事
No.1
Java&Spring記事人気No1
COBOLで学ぶSELECT文のORDER BY・GROUP BY活用法!初心者でもわかるデータ集計
No.2
Java&Spring記事人気No2
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.3
Java&Spring記事人気No3
COBOLのCOPY句の使い方を完全ガイド!初心者でもわかる共通部品の再利用方法
No.4
Java&Spring記事人気No4
COBOLで学ぶカーソル操作と複数行データ取得の基本
No.5
Java&Spring記事人気No5
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.6
Java&Spring記事人気No6
C#の数値型をマスターしよう!int・double・decimalの違いと使い方
No.7
Java&Spring記事人気No7
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方
No.8
Java&Spring記事人気No8
C#の日付型(DateTime)と基本的な使い方を解説|初心者向け入門ガイド