13,009
回編集
(ページの作成:「== 概要 == 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ファイルを読み込む ==== | ||