C#でCSVファイルを読み書きする基本と応用(Split・StringBuilder)
生徒
「先生、C#でCSVファイルを読み込んだり書き込んだりする方法を知りたいです。」
先生
「いいですね。CSVファイルは、データを表形式で扱うときによく使われるファイル形式ですよ。」
生徒
「CSVってエクセルでも開けるやつですか?」
先生
「その通りです。C#でも簡単に読み書きできるので、基本から応用まで一緒に見ていきましょう。」
1. CSVファイルとは?
CSVファイルとは、「Comma Separated Values(カンマ区切り値)」の略で、文字どおり「カンマで区切られたデータ」を保存するファイル形式です。拡張子は「.csv」で、1行が1つのレコード(データのまとまり)を表し、カンマで区切られた部分がそれぞれの項目になります。
例えば、次のような内容です。
名前,年齢,職業
田中太郎,28,エンジニア
鈴木花子,24,デザイナー
このように、Excelでも開けるテキストファイル形式なので、C#で扱うときにも非常に便利です。
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を使う)
次に、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を加工する応用例
ここまでの方法を組み合わせれば、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の読み書きやデータ加工ができます。SplitとStringBuilderを組み合わせることで、業務でよく使うデータ処理を効率的に自動化できるようになります。
5. CSV操作で注意すべきポイント
CSVファイルを扱うときに注意したいのは、「カンマがデータの中に含まれている場合」です。たとえば、会社名に「株式会社,東京支社」とカンマが入っていると、正しく分割できなくなることがあります。
その場合は、ダブルクォーテーション(")で囲むなどの対策が必要ですが、基本的な操作ではまずSplitとStringBuilderの使い方をマスターしておけば十分です。
6. まとめ:CSVはC#で簡単に扱える!
C#のファイル操作の中でも、CSVは非常に利用頻度が高いです。Splitを使えば文字列を分解でき、StringBuilderを使えば効率よく出力できます。プログラミング未経験の方でも、データを扱う仕組みを体験しながら学べるので、ぜひ練習してみてください。