2011-03-21 66 views
3

我使用的代碼導出CSV文件中的datagridview的記錄:如何使用逗號將字符串導出爲csv中的值?

using (StreamWriter myFile = new StreamWriter(filename, false, Encoding.Default)) 
{ 
     string sHeaders = ""; 
     for (int j = 0; j < dGV.Columns.Count; j++) 
     { 
      if (dGV.Columns[j].Visible) 
      { 
       sHeaders = sHeaders.ToString() + dGV.Columns[j].HeaderText + ", "; 
      } 
     } 
     myFile.WriteLine(sHeaders); 
     // Export data. 
     for (int i = 0; i < dGV.RowCount; i++) 
     { 
      string stLine = ""; 
      for (int j = 0; j < dGV.Rows[i].Cells.Count; j++) 
      { 
       if (dGV.Columns[j].Visible) 
       { 
        stLine = stLine.ToString() + dGV.Rows[i].Cells[j].Value.ToString() + ", "; 
       } 
      } 
         myFile.WriteLine(stLine); 
     } 
    } 
    } 

但問題是,如果在DataGridViewCell的值是Harikrishna,Daxini那麼就不會導出正確的,因爲有逗號在單元格的值,但我需要在值中包含逗號,並且它應該正確導出。我該怎麼做?我嘗試用雙引號和單引號括起該值,但它不起作用。

+0

雙引號應該工作。你在分開的逗號和雙引號之間有空格嗎? – Belinda 2011-03-21 11:10:09

+0

@Belinda,像這樣 - 「Harikrishna,Daxini」? – Harikrishna 2011-03-21 11:13:09

+0

我的意思是你輸入你的值,比如'「val1」,「val2」或「」val1「,」val2「'。這可能會對CSV產生影響。 – Belinda 2011-03-21 11:16:38

回答

10

分隔逗號和打開雙引號之間的空格會導致CSV問題。用您的csv文件中的"val1", "val2"代碼替換爲"val1","val2"。這應該解決你的問題。

+1

我不知道逗號之間的空格是否如此重要。這解決了我一直在苦苦掙扎的問題,甚至難以描述。 – 2012-05-22 20:16:58

3

包含','的值需要使用雙引號括起來進行轉義。

  for (int j = 0; j < dGV.Rows[i].Cells.Count; j++) 
     { 
      if (dGV.Columns[j].Visible) 
      { 
        var value = dGV.Rows[i].Cells[j].Value.ToString(); 
        var append = value.Contains(",") 
           ? string.Format("\"{0}\"", value) 
           : value; 
        stLine = string.Format("{0}{1},", stLine, append) ; 
      } 
     } 
+0

我試過這個,但它不起作用,像「\」「+ | harikrishna,daxini +」\「」。 – Harikrishna 2011-03-21 11:11:09

+0

@Harikrishna這是用逗號導出值的正確方法。您如何閱讀或使用您生成的csv?也許正在閱讀你的csv的代碼沒有正確解析引用的數據字段? – NerdFury 2011-03-21 11:17:03

+0

對不起,但這不起作用,爲什麼我檢查,但這不起作用。 – Harikrishna 2011-03-21 11:20:15

相關問題