2016-05-12 5 views
0

目的:CSV内の特定の単一の列を検索し、その列の空の行のみを検索し、文字列「No Box」で置き換えます。すべての行のCSVファイル内の特定の列の空のセルを検索するにはどうすればよいですか?

試行:これまでのところ、CsvHelperとCsvTools(CsvReader)をNuget C#で使用しようとしました。私はCの経験が豊富なので、どのように私の仕事を達成するか分からない。検索には、私が実装する必要があることを理解する助けとなる参考資料や参考文献は載っていませんでした。同様の質問がたくさんありますが、いずれも特定の列を検索していません。私は誰かが私のforループを働かせ、私のチェックのために行の数を得る方法に関するアドバイスを私に提供できることを願っています。

私のCSVファイルの画像サンプル。 Sample of CSV data column Site

private static void SiteBlanks() 
{   
    try 
    { 
     MutableDataTable dt = DataAccess.DataTable.New.ReadCsv(@"C:\temp.csv"); 

     for (int i = 0; i <= dt.Rows.Count; i++) // Cannot be applied to data types, so this errors. 
     { 
      if (!string.IsNullOrEmpty(dt.GetRow(i)["Site"])) // Check if cells in column 1 are empty 
      { 
       dt.Columns[1].Values[i] = "No Box"; // Update empty values with No Box 

      } 
     } 
     dt.SaveCSV(@"C:\temp.csv"); // Save file after changes. 
    } 
    catch (Exception ex) 
    { 
     //Set Error message 
     Error("ERROR: SiteBlanks()", ex); 
    } 
} 

注:これは、これまでとても穏やかな、私は賢明な間違った投稿をしたしていることを教え尋ねた私の最初の質問です。

+0

を試すことができます: "もし(string.IsNullOrEmpty(dt.GetRow(I)![" サイト "]))"。 –

+0

私は実際に私が見た例に基づいて私の古い方法と同様のものを試しました。私はしかし、増加がありませんでした。今すぐフォームでテストしてください。 – Sky

+0

チェックする行ごとにc:\ temp.csvファイルのコピーを保存しないでください。 – Tormod

答えて

0

あなたの現在のコードに基づいて、あなたのような更新しようと、次の

private static void SiteBlanks() { 
    try { 
     string filePath = @"C:\temp.csv"; 
     MutableDataTable dt = DataTable.New.ReadCsv(filePath); 
     string columnName = "Site";   
     var numberOfRows = dt.NumRows ; 
     for (int i = 0; i < numberOfRows; i++) { 
      var row = dt.GetRow(i); 
      if (string.IsNullOrEmpty(row[columnName])) { 
       row[columnName] = "No Box"; 
      } 
     } 
     dt.SaveCSV(filePath); 
    } catch (Exception ex) { 
     //Set Error message 
     Error("ERROR: SiteBlanks()", ex); 
    } 
} 
関連する問題