「C Sharpの基礎 - CSVファイル」の版間の差分

ナビゲーションに移動 検索に移動
(ページの作成:「== 概要 == CSV (Comma-Separated Values) は、テキストベースのシンプルなファイル形式である。<br> 各行がデータレコードを表しており、フィールドはカンマ (または他の区切り文字) で区切られている。<br> <br> C#でCSVファイルを読み込む場合は、主に<code>System.IO</code>名前空間のクラスを使用する。<br> <code>File.ReadAllLines</code>メソッドを使用してファイルの全…」)
 
27行目: 27行目:
<br><br>
<br><br>


== CSVファイル ==
== TextFieldParserクラス ==
CSVファイルを読み込むには、.NET Framework 2.0で追加された<code>TextFieldParser</code>クラス(<code>Microsoft.VisualBasic.FileIO</code>名前空間)を使用する。<br>
CSVファイルを読み込むには、.NET Framework 2.0で追加された<code>TextFieldParser</code>クラス(<code>Microsoft.VisualBasic.FileIO</code>名前空間)を使用する。<br>
<code>TextFieldParser</code>クラスを使用することで、CSVファイルを読み込み、各行の各フィールドの文字列を簡潔に取得することができる。<br>
<code>TextFieldParser</code>クラスを使用することで、CSVファイルを読み込み、各行の各フィールドの文字列を簡潔に取得することができる。<br>
<br>
==== RFC 4180との関係 ====
TextFieldParserクラスは多くのRFC 4180の要件を満たしている。
ただし、いくつかの点で完全な準拠ではない。
<br>
* 準拠している点
** カンマで区切られたフィールドの処理
** 引用符で囲まれたフィールド内のカンマの処理
** 改行文字を含むフィールドの処理
*: <br>
* 部分的に準拠している点
** 引用符の扱い
**: <code>TextFieldParser</code>クラスは引用符の使用を柔軟に設定できるが、デフォルトの動作がRFC 4180と完全に一致するわけではない。
*: <br>
* 準拠していない可能性がある点
** ヘッダ行の特別な扱い
**: RFC 4180はヘッダ行について言及しているが、<code>TextFieldParser</code>クラスにはヘッダ行を自動的に識別する機能がない。
** 厳密なCRLF改行の要求
**: RFC 4180はCRLF (\r\n) を改行として指定しているが、<code>TextFieldParser</code>クラスはより柔軟である。
<br>
以下の例では、<code>TextFieldParser</code>クラスを使用して、RFC 4180の仕様に近づけている。<br>
<syntaxhighlight lang="c#">
using Microsoft.VisualBasic.FileIO;
using (TextFieldParser parser = new TextFieldParser("sample.csv"))
{
    parser.TextFieldType = FieldType.Delimited;
    parser.SetDelimiters(",");
    parser.HasFieldsEnclosedInQuotes = true;  // RFC 4180に準拠するため
    // ヘッダ行の処理
    string[] headers = parser.ReadFields();
    while (!parser.EndOfData)
    {
      string[] fields = parser.ReadFields();
      // フィールドの処理を行う
    }
}
</syntaxhighlight>
<br>
<br>
==== CSVファイルを読み込む ====
==== CSVファイルを読み込む ====

案内メニュー