2016-10-16 4 views
2

からデータテーブルにインポートされていない、データテーブルは、ヘッダ行最初の行は、私はデータテーブルと、いくつかの理由のためにCSVファイルをエクスポートするアプリケーションに取り組んでいCSV

後CSVの最初の行が移入されていない私が試みました を次のように

Regex r = new Regex(",(?=(?:[^\"]*\"[^\"]*\")*(?![^\"]*\"))"); 

      StreamReader sr = new StreamReader(fileName); 
      string[] headers = sr.ReadLine().Split(','); 
      foreach (string header in headers) 
      { 
       dt.Columns.Add(header); 
      } 

      line = sr.ReadLine(); 
      strArray = r.Split(line);   


      while ((line = sr.ReadLine()) != null) 
      { 
       row = dt.NewRow(); 


       row.ItemArray = r.Split(line); 
       dt.Rows.Add(row); 
      } 


      sr.Dispose(); 

csvファイル

FirstName,LastName,Address 
Sally, Whittaker,Houston 
Belinda, Jameson,Austin 
Jeff, Smith,Seattle 

ヘッダがうまくエクスポートされますが、ヘッダーの後の行がアップロードされていないコードは、次のenter image description here

何か不足しているかどうか分かりますか?

答えて

1

ReadLine()をwhileループの外側で削除します。最初の読み取りは最初の行で、whileループの読み取りはその最初の行の後に起こるためです。

line = sr.ReadLine(); 
1

これは、余分なReadLineです。あなたは下の行を読んでいますが、最後は使用していません。

  line = sr.ReadLine(); 
      strArray = r.Split(line); 
1

あなたの「しばらく」ループの前に次の2行を削除します。

 line = sr.ReadLine(); 
     strArray = r.Split(line); 

だけでなく、両方の役に立たないですが、最初は、あなたの問題の原因です。

'これは役立ちます。

関連する問題