基本情報
料金
期間
転職サポート
講師
  料金 分割払い リンク
テックアカデミーロゴ 185,900円〜
※給付金制度あり
月々約7,746円〜 公式
評判
DMM WEBCAMPロゴ 169,800円~
※給付金制度あり
月々約7,075円〜 公式
評判
デイトラロゴ 99,800円 月々約4,159円〜 公式
評判
侍エンジニアロゴ 165,000円~
※侍テラコヤは月額2,980円~
月々約6,875円〜 公式
評判
テックキャンプロゴ 657,800円~
※給付金制度あり
月々約27,409円〜 公式
評判
ディープロロゴ 797,800円
※給付金制度あり
月々約33,242円〜 公式
評判
ポテパンキャンプロゴ 440,000円
※全額返金保証あり
月々約18,334円〜 公式
評判
  期間 リンク
テックアカデミーロゴ 4~16週間 公式
評判
DMM WEBCAMPロゴ 4~24週間 公式
評判
デイトラロゴ 90日間 公式
評判
侍エンジニアロゴ 4~48週間 公式
評判
テックキャンプロゴ 最短10週間 公式
評判
ディープロロゴ 4ヶ月 公式
評判
ポテパンキャンプロゴ 5ヶ月 公式
評判
  転職サポート リンク
テックアカデミーロゴ 公式
評判
DMM WEBCAMPロゴ 公式
評判
デイトラロゴ × 公式
評判
侍エンジニアロゴ 公式
評判
テックキャンプロゴ 公式
評判
ディープロロゴ 〇(10ヶ月間) 公式
評判
ポテパンキャンプロゴ 公式
評判
  講師 リンク
テックアカデミーロゴ 全員が実務経験3年以上の現役エンジニア 公式
評判
DMM WEBCAMPロゴ 実務経験豊富な現役エンジニア 公式
評判
デイトラロゴ 現役で活躍するプロ講師 公式
評判
侍エンジニアロゴ 一人の現役エンジニアが卒業までサポート 公式
評判
テックキャンプロゴ 未経験者にプログラミングを教えるプロ 公式
評判
ディープロロゴ 実務経験豊富なプロ講師 公式
評判
ポテパンキャンプロゴ 経験豊富な現役エンジニア 公式
評判

IT

【C#入門】CSV読み込みする方法を現役エンジニアが解説【コピペOK】

本記事でわかること

  • C#を使ってCSVファイル読み込みする方法
  • 特殊なCSVデータを読み込む場合

 

「C#を使ったCSVファイル読み込み処理を作りたい」

「特殊なデータでも読み込める方法を知りたい」

そんな方向けに、C#のサンプルコード付きで解説します。

 

「C#をなるべく早く習得したい」

「C#でゲーム開発もできるようになりたい」

そんな方はゲーム開発エンジンであるUnityも合わせて学ぶのがオススメです。

プログラミングスクール『TechAcademy(テックアカデミー)』では、C#を学べる『Unityコース』が用意されています。

気になる方は無料でできる受講体験から始めてみましょう。

\最短1分で申し込み完了/

テックアカデミー公式サイト

Unityコースの内容について詳しく知りたい方はこちらの記事も合わせてご覧ください。

【テックアカデミー】Unityコースでゲームエンジニアに転職しよう

C#を使ってCSVファイル読み込みする方法

C#を使ってCSVファイル読み込みする方法

C#を使ってCSVファイル読み込みする方法は以下2つです。

CSV読み込みする方法

  1. StreamReaderを使用して読み込む
  2. TextFieldParserを使用して読み込む

 

1.StreamReaderを使用して読み込む

CSVファイルをC#で読み込むために、StreamReaderを使用する方法があります。

StreamReaderはテキストファイルを行単位で読み込むのに適しています。

 

サンプルコードは以下の通り。

using System;
using System.IO;

class FileOperation
{
    static void ReadCsvFile()
    {
        // CSVファイルのパスを指定
        string filePath = "sample.csv";

        try
        {
            // StreamReaderを使用してファイルを開く
            using (StreamReader reader = new StreamReader(filePath))
            {
                while (!reader.EndOfStream)
                {
                    // 1行ずつ読み込む
                    string line = reader.ReadLine();

                    // CSVのカラムを分割
                    string[] values = line.Split(',');

                    // 各カラムのデータを処理する
                    foreach (string value in values)
                    {
                        Console.Write(value + "\t");
                    }
                    Console.WriteLine();
                }
            }
        }
        catch (Exception e)
        {
            Console.WriteLine("エラー: " + e.Message);
        }
    }
}

このコードを使うことで、指定されたCSVファイルを1行ごとに読み取って、各カラムの値を出力することができます。

 

2.TextFieldParserを使用して読み込む

TextFieldParserクラスを使用する方法でもCSVファイル読み込みができます。

TextFieldParserは、CSVファイルをパースするための高レベルなツールで、カンマ区切りのデータを簡単に読み込み、フィールドごとにアクセスできます。

ファイルのオープン、データの読み取り、そして最後にクローズといったステップが簡単に実行できるため、CSVファイルの処理に便利です。

この方法を選ぶと、煩雑なCSVパースコードを自分で書く必要がないため、効率的で保守的なコードを作成できます。

 

サンプルコードは以下の通り。

using System;
using Microsoft.VisualBasic.FileIO;

class FileOperation
{
    static void ReadCsvFile()
    {
        // CSVファイルのパスを指定
        string filePath = "sample.csv";

        try
        {
            using (TextFieldParser parser = new TextFieldParser(filePath))
            {
                parser.TextFieldType = FieldType.Delimited;
                parser.SetDelimiters(",");

                while (!parser.EndOfData)
                {
                    // 1行ずつ読み込む
                    string[] fields = parser.ReadFields();

                    // 各カラムのデータを処理する
                    foreach (string field in fields)
                    {
                        Console.Write(field + "\t");
                    }
                    Console.WriteLine();
                }
            }
        }
        catch (Exception e)
        {
            Console.WriteLine("エラー: " + e.Message);
        }
    }
}

CSVファイルを読み込んで、指定されたデリミタ(カンマ)でデータを分割して各カラムの値を出力できます。

この方法は、CSVファイルのパースやエラーハンドリングが簡単であり、より高度なCSV処理に適しています。

 

特殊なCSVデータを読み込む場合

 

データをダブルコーテーション(")で囲ってる場合

データをダブルコーテーション(")で囲ってる場合、CsvHelperライブラリを使用することで簡単に読み込みができます。

以下サンプルコードのように、囲み文字(Quote)を指定することでエスケープして正しく解釈します。

 

using System;
using System.IO;
using System.Text;
using CsvHelper;
using CsvHelper.Configuration;

public class CsvRecord
{
    [Name("Column1")]
    public string Field1 { get; set; }
    [Name("Column2")]
    public string Field2 { get; set; }
}
class FileOperation
{
    static void ReadCsvFile()
    {
        using (var reader = new StreamReader("sample.csv"))
        using (var csv = new CsvReader(reader, new CsvConfiguration(CultureInfo.InvariantCulture)
        {
            Delimiter = ",",
            Quote = '"'
        }))
        {
            var records = csv.GetRecords<CsvRecord>().ToList();
            foreach (var record in records)
            {
                Console.WriteLine($"Field1: {record.Field1}, Field2: {record.Field2}");
            }
        }
    }
}

 

データの中にカンマ(,)が存在する場合

データの中にカンマ(,)が存在する場合の読み込み方法について解説します。

例えば、以下のようなデータがあったとしましょう。

Name,Description,Price

Product 1,\"This product, with a comma\",100

Product 2,Another product,50

 

データ内にカンマがある場合は、ダブルクォーテーションで囲うことで区切りを明確にします。

サンプルコードは以下の通り。

using System;
using System.IO;
using System.Globalization;
using CsvHelper;
using CsvHelper.Configuration;

class FileOperation
{
    static void ReadCsvFile()
    {
        var csvText = "Name,Description,Price\n" +
                      "Product 1,\"This product, with a comma\",100\n" +
                      "Product 2,Another product,50";

        using (var reader = new StringReader(csvText))
        using (var csv = new CsvReader(reader, new CsvConfiguration(CultureInfo.InvariantCulture)
        {
            HasHeaderRecord = true,
        }))
        {
            var records = csv.GetRecords<Product>();
            foreach (var record in records)
            {
                Console.WriteLine($"Name: {record.Name}, Description: {record.Description}, Price: {record.Price}");
            }
        }
    }
}

public class Product
{
    public string Name { get; set; }
    public string Description { get; set; }
    public decimal Price { get; set; }
}

 

区切り文字がタブの場合

区切り文字がタブの場合の読み込み方法について解説します。

例えば、以下のようなデータがあったとしましょう。

Name\tDescription\tPrice

Product 1\tThis is a product\t100\n

Product 2\tAnother product\t50

※「\t」がタブのことです。

 

サンプルコードは以下の通り。

using System;
using System.IO;
using CsvHelper;
using CsvHelper.Configuration;

class FileOperation
{
    static void ReadCsvFile()
    {
        var csvText = "Name\tDescription\tPrice\n" +
                      "Product 1\tThis is a product\t100\n" +
                      "Product 2\tAnother product\t50";

        using (var reader = new StringReader(csvText))
        using (var csv = new CsvReader(reader, new CsvConfiguration(System.Globalization.CultureInfo.InvariantCulture)
        {
            Delimiter = "\t", // タブを区切り文字として設定
            HasHeaderRecord = true,
        }))
        {
            var records = csv.GetRecords<Product>();
            foreach (var record in records)
            {
                Console.WriteLine($"Name: {record.Name}, Description: {record.Description}, Price: {record.Price}");
            }
        }
    }
}

public class Product
{
    public string Name { get; set; }
    public string Description { get; set; }
    public decimal Price { get; set; }
}

 

まとめ

今回は、『【C#入門】CSV読み込みする方法を現役エンジニアが解説【コピペOK】』というテーマでお話してきました。

 

「C#を使ったCSVファイル読み込み処理を作りたい」

「特殊なデータでも読み込める方法を知りたい」

そんな方の参考になっていたら幸いです。

 

「C#をなるべく早く習得したい」

「C#でゲーム開発もできるようになりたい」

そんな方はゲーム開発エンジンであるUnityも合わせて学ぶのがオススメです。

プログラミングスクール『TechAcademy(テックアカデミー)』では、C#を学べる『Unityコース』が用意されています。

気になる方は無料でできる受講体験から始めてみましょう。

\最短1分で申し込み完了/

テックアカデミー公式サイト

Unityコースの内容について詳しく知りたい方はこちらの記事も合わせてご覧ください。

【テックアカデミー】Unityコースでゲームエンジニアに転職しよう

本記事は以上となります。

スクール選びに迷ったらテックアカデミー!

テックアカデミーは、料金や講師の質、転職サポート、これまでの実績など総合的にもっともオススメできるプログラミングスクールです。

現役エンジニアとして10年以上プログラミングやシステム開発に携わった経験、メディア運営者としてプログラミングスクール30社以上比較・レビューしてきた経験から自信を持って推奨します。

強いてデメリットを挙げるとしたら『オンライン対応のみ』ってことくらい。

「オフラインで直接指導を受けたい」といった方以外はテックアカデミーを選んでおけば間違いありません!

受講前に無料相談を受けることもできるので、「初心者でも大丈夫か?」「副業で稼げるのか?」といった疑問にもしっかり答えてもらえますよ。

テックアカデミー公式サイトを見る

  • この記事を書いた人

サカイユウヤ

プログラミングスクール選びに迷ってる方に向けて、ベストな選択ができるようにサポートをしてます。 【経歴】1986年生まれ ▶ 茨城県出身▶ 大学で福島県へ▶ 就職で東京▶ 某SIer企業で丸7年正社員として勤務▶ 独立してフリーランスエンジニア ● 2020年7月ブログスタート ● エンジニア歴13年(内フリーランス歴6年) ●プログラミングスクール30社以上見てきた経験から、初心者におすすめできるスクールを掲載中

-IT

© 2020 初心者向けプログラミングスクールおすすめサイト|さかこじぶろぐ

プログラミングスクールの最新キャンペーン・割引情報をまとめました。損したくない人必見!
お得にプログラミングを学ぶ
お得なキャンペーン情報を見る