- C#を使ってCSVファイル読み込みする方法
- 特殊なCSVデータを読み込む場合
「C#を使ったCSVファイル読み込み処理を作りたい」
「特殊なデータでも読み込める方法を知りたい」
そんな方向けに、C#のサンプルコード付きで解説します。
「C#をなるべく早く習得したい」
「C#でゲーム開発もできるようになりたい」
そんなゲームエンジニア志望のあなたは、
ゲーム開発エンジンであるUnityも合わせて学ぶ一択!
プログラミングスクール『TechAcademy(テックアカデミー)』では、C#を学べる『Unityコース』がある。
まだ、Unityをかじってもいないならば、無料でできる受講体験から始めてみよう。
Unityコースの内容について詳しく知りたい方はこちらの記事も合わせてご覧ください。
Table of Contents
C#を使ってCSVファイル読み込みする方法
C#を使ってCSVファイル読み込みする方法は以下2つです。
CSV読み込みする方法
- StreamReaderを使用して読み込む
- 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処理に適しています。
~当サイト実績(ランキング)~
当サイトから下記コンテンツ購入実績
コンテンツ名 | 公式サイト | 評判・口コミ | |
---|---|---|---|
1位 | 普通女子大生が フォロワー6万人 インスタの 収益化までの 全ノウハウ |
公式サイトを見る 現在 :31件 |
評判を見る |
2位 | ブログスクール WEBキャン【TikTok3.2万人が登録】 |
公式サイトを見る 現在 :6件 |
割引を見る |
3位 | 【未経験者でも ”たったの21日” で20万円稼げた! 『低単価アパレル× ヤフオク1スタ』 完全攻略マニュアル |
公式サイトを見る 現在 :12件 |
評判を見る |
4位 | AIMクリエイターズカレッジ 【動画編集の最高峰】 ランサーズと提携 |
公式LINEを見る 現在 :14件 |
評判を見る |
5位 | アオの 案件獲得スクール 【動画編集:営業】 |
公式サイトを見る 現在 :7件 |
評判を見る |
PR | ただいま、 スペシャルPR案件 をいただいており 大型クーポン ・特典つきスクール (SNS運用・物販・動画編集・ ブログ関連) クローズド3件あり |
クーポンを見る | ←クーポン と返信! |
IT関係の方に特にオススメなのはやっぱりブログです。
公式LINEではクーポンやお仕事のお悩み相談も実施しているので、休みの日や仕事後など副業の相談してみること!まずは行動から!
普通女子大生がフォロワー6万人インスタの収益化までの全ノウハウ を購入
今はInstagramフォロワー4200人、TikTokは34,000人フォロワーがいます。
特殊な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コース』がある。
まだ、Unityをかじってもいないならば、無料でできる受講体験から始めてみよう。
Unityコースの内容について詳しく知りたい方はこちらの記事も合わせてご覧ください。
本記事は以上となります。
当サイト実績(ランキング)
当サイトから下記コンテンツ購入実績
コンテンツ名 | 公式サイト | 評判・口コミ | |
---|---|---|---|
1位 | 普通女子大生が フォロワー6万人 インスタの 収益化までの 全ノウハウ |
公式サイトを見る 現在 :31件 |
評判を見る |
2位 | ブログスクール WEBキャン【TikTok3.2万人が登録】 |
公式サイトを見る 現在 :6件 |
割引を見る |
3位 | 【未経験者でも ”たったの21日” で20万円稼げた! 『低単価アパレル× ヤフオク1スタ』 完全攻略マニュアル |
公式サイトを見る 現在 :12件 |
評判を見る |
4位 | AIMクリエイターズカレッジ 【動画編集の最高峰】 ランサーズと提携 |
公式LINEを見る 現在 :14件 |
評判を見る |
5位 | アオの 案件獲得スクール 【動画編集:営業】 |
公式サイトを見る 現在 :7件 |
評判を見る |
PR | ただいま、 スペシャルPR案件 をいただいており 大型クーポン ・特典つきスクール (SNS運用・物販・動画編集・ ブログ関連) クローズド3件あり |
クーポンを見る | ←クーポン と返信! |
IT関係の方に特にオススメなのはやっぱりブログです。
公式LINEではクーポンやお仕事のお悩み相談も実施しているので、休みの日や仕事後など副業の相談してみること!まずは行動から!
普通女子大生がフォロワー6万人インスタの収益化までの全ノウハウ を購入
今はInstagramフォロワー4200人、TikTokは34,000人フォロワーがいます。