C# CSVファイルのデータ読込 区切りで分割

  • デル株式会社
  • CSVファイルを読み込んで、string配列へ格納するコードを
    必要に迫られて書いた。
    そのうち、もちょっと修正しよう。。

    しかし、言語が変わっても、自分の発想が変わってないのが悲しい。

    VCで似たの書いてた。。

    カンマ分解関数

    ちなみに、サイズの大きなCSVファイルには、使用しないでね。
    使う場合は、何件分取得するとかで修正する。

    private void btnSplit_Click(object sender, EventArgs e)
    {
         List<string[]> sStrList = new List<string[]>();  // CSV分割後格納リスト
       
         if( CsvSplit( sCsvPath, ',', ref sStrList ) == false )
         {
             // なんか失敗
             return;
         }
    
         sStrList.ForEach( sList =>
         {
             Debug.WriteLine(sList);
         });
    }
    
    /// <summary>
    /// CSVファイルを読込分割してリストを返す。
    /// </summary>
    
    /// <param name="sCsvFilePath">
    /// CSVファイルパス
    /// </param>
    /// <param name="chDlimiter">
    /// CSVの区切り文字
    /// </param>
    /// <param name="sStrList">
    /// 返却用のListオブジェクト List<string[]>
    /// xmlxmlxml</param>
    /// <returns>
    /// true:正常
    /// false:異常
    /// </returns>
    public bool CsvSplit( string sCsvFilePath,
                          char   chDlimiter, 
                          ref List<string[]> sStrList )
    {
        bool bRet = true;
    
        try
        {
            // CSVファイル読込
            using ( StreamReader objReader = new StreamReader( sCsvFilePath, 
                                                               Encoding.GetEncoding( "shift_jis" ) ) )
            {
                // ストリームの末尾まで繰り返す
                while (objReader.EndOfStream != true)
                {
                    // ファイルから一行読み込む
                    string sLine = objReader.ReadLine();
    
                    // 読み込んだ一行を区切り文字で分けて配列に格納する
                    string[] sValues = sLine.Split( chDlimiter );
    
                    // 返却用リストに格納
                    sStrList.Add(sValues);
    
                }//End while
            }
         }
         catch ( Exception e )
         {
             // ファイルを開くのに失敗したとき
             Debug.WriteLine(e.Message);
    
             bRet = false;
         }
                         
         return bRet;
    }
    

    がんばろ

    関連記事

    ページ上部へ戻る