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