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

ナビゲーションに移動 検索に移動
71行目: 71行目:
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
==== CSVファイルを読み込む ====
==== CSVファイルの読み込み ====
===== エンコーディングの指定 =====
<code>TextFieldParser</code>クラスを使用してCSVファイルを読み込むには、<br>
<code>TextFieldParser</code>クラスを使用してCSVファイルを読み込むには、<br>
まず、<code>TextFieldParser</code>クラスのコンストラクタに処理するCSVファイルを指定して、インスタンスを生成する。<br>
まず、<code>TextFieldParser</code>クラスのコンストラクタに処理するCSVファイルを指定して、インスタンスを生成する。<br>
<br>
CSVファイルに日本語が含まれている場合は、文字コードを指定する。<br>
CSVファイルに日本語が含まれている場合は、文字コードを指定する。<br>
  <syntaxhighlight lang="c#">
  <syntaxhighlight lang="c#">
79行目: 81行目:
  using Microsoft.VisualBasic.FileIO;
  using Microsoft.VisualBasic.FileIO;
   
   
  var parser = new TextFieldParser(@"hoge.csv", Encoding.GetEncoding("Shift_JIS"));  // 文字コードはShift-JISを指定する
  var parser = new TextFieldParser(@"hoge.csv", Encoding.GetEncoding("Shift_JIS"));  // Shift-JISを指定
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
次に、<code>TextFieldType</code>プロパティに<code>FieldType.Delimited</code>を指定する。<br>
===== デリミタの指定 =====
もし、<code>FieldType.FixedWidth</code>を指定する場合、フィールドが固定幅のファイルも扱うことができる。<br>
デリミタを指定する場合は、<code>TextFieldType</code>プロパティに<code>FieldType.Delimited</code>を指定する。<br>
<br>
<br>
また、<code>SetDelimiters</code>メソッドを使用して、区切り文字を指定する。(複数の区切り文字が指定可能)<br>
<code>SetDelimiters</code>メソッドを使用して、区切り文字を指定する。(複数の区切り文字が指定可能)<br>
CSVファイルの場合は、<code>,</code>(カンマ)を指定する。<br>
CSVファイルの場合は、<code>,</code>(カンマ)を指定する。<br>
<br>
また、<code>FieldType.FixedWidth</code>を指定する場合、フィールドが固定幅のファイルも扱うことができる。<br>
<br>
  <syntaxhighlight lang="c#">
  <syntaxhighlight lang="c#">
  parser.TextFieldType = FieldType.Delimited;
  parser.TextFieldType = FieldType.Delimited;
92行目: 97行目:
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
===== レコードの取得 ====
<code>TextFieldParser</code>クラスの<code>ReadFields</code>メソッドを実行するごとに、CSVファイルを1行ずつ読むことができる。<br>
<code>TextFieldParser</code>クラスの<code>ReadFields</code>メソッドを実行するごとに、CSVファイルを1行ずつ読むことができる。<br>
<code>ReadFields</code>メソッドは、読み込んだレコードの全てのフィールドを文字列配列に変換して返す。<br>
<code>ReadFields</code>メソッドは、読み込んだレコードの全てのフィールドを文字列配列に変換して返す。<br>
次のレコードが存在するかどうかは<code>EndOfData</code>プロパティにより判定できるため、ループにより、CSVファイル全体を処理できる。<br>
<br>
次のレコードが存在するかどうかは<code>EndOfData</code>プロパティにより判定できるため、繰り返し文を使用してCSVファイル全体を処理する。<br>
  <syntaxhighlight lang="c#">
  <syntaxhighlight lang="c#">
  while (!parser.EndOfData)
  while (!parser.EndOfData)
103行目: 110行目:
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
==== CSVファイルを読み込み表示する ====
==== CSVファイルを読み込み表示する ====
以下の例では、hoge.csvファイルを読み込み、各フィールドを切り出してタブ区切りで画面に出力する。<br>
以下の例では、hoge.csvファイルを読み込み、各フィールドを切り出してタブ区切りで画面に出力する。<br>

案内メニュー