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

ナビゲーションに移動 検索に移動
117行目: 117行目:
<br>
<br>
===== 使用例 =====
===== 使用例 =====
以下の例では、hoge.csvファイルを読み込み、各フィールドを切り出してタブ区切りで画面に出力する。<br>
以下の例では、sample.csvファイルを読み込み、各フィールドを切り出してタブ区切りで画面に出力する。<br>
改行文字および空白文字がどのように処理されるかを分かりやすくするために、それぞれをnと_に置換して出力している。<br>
改行文字および空白文字がどのように処理されるかを分かりやすくするために、それぞれをnと_に置換して出力している。<br>
<br>
<br>
136行目: 136行目:
     static void Main()
     static void Main()
     {
     {
       using (var parser = new TextFieldParser("text.csv", Encoding.GetEncoding("Shift_JIS")))
       using (var parser = new TextFieldParser("sample.csv", Encoding.GetEncoding("Shift_JIS")))
       {
       {
           parser.TextFieldType = FieldType.Delimited;  // フィールドはデリミタにより区切る(可変)
           parser.TextFieldType = FieldType.Delimited;  // フィールドはデリミタにより区切る(可変)
163行目: 163行目:
             }
             }
           }
           }
      }
    }
}
</syntaxhighlight>
<br>
==== CSVファイルの書き込み ====
===== 使用例 =====
以下の例では、StreamWriterクラスを使用して、CSVファイルへ書き込んでいる。<br>
<br>
<syntaxhighlight lang="c#">
using System;
using System.Text;
using System.IO;
using Microsoft.VisualBasic.FileIO;
class CSVParser
{
    static void Main()
    {
      // 読み込み処理
      ReadCSV("input.csv");
      // 書き込み処理
      WriteCSV("output.csv");
    }
    static void ReadCSV(string inputFile)
    {
      using (var parser = new TextFieldParser(inputFile, Encoding.GetEncoding("Shift_JIS")))
      {
          parser.TextFieldType = FieldType.Delimited;
          parser.Delimiters = new[] {","};
          parser.CommentTokens = new[] {"#"};
          while (!parser.EndOfData)
          {
            try
            {
                string[] row = parser.ReadFields();
                foreach (string field in row)
                {
                  string processedField = field.Replace("\r\n", "n").Replace(" ", "_");
                  Console.Write(processedField + "\t");
                }
            }
            catch(Exception ex)
            {
                Console.WriteLine("読み込みエラー: " + ex.Message);
            }
          }
      }
    }
    static void WriteCSV(string outputFile)
    {
      try
      {
          using (StreamWriter writer = new StreamWriter(outputFile, false, Encoding.GetEncoding("Shift_JIS")))
          {
            // ヘッダ行を書き込む
            writer.WriteLine("列1,列2,列3");
            // データ行を書き込む
            writer.WriteLine("値1,値2,値3");
            writer.WriteLine("値4,\"値5,カンマを含む\",値6");
            writer.WriteLine("値7,値8,\"値9\n改行を含む\"");
          }
      }
      catch (Exception ex)
      {
          Console.WriteLine("書き込みエラー: " + ex.Message);
       }
       }
     }
     }

案内メニュー