2012-05-10 65 views
7

我有C#字典,我想從它創建一個.csv文件。 比如我有這本字典:C#字典到.csv

Dictionary<string, string> data = new Dictionary<string, string>(); 
data.Add("0", "0.15646E3"); 
data.Add("1", "0.45655E2"); 
data.Add("2", "0.46466E1"); 
data.Add("3", "0.45615E0"); 

而且我想這個.csv文件輸出:

0;0.15646E3; 
1;0.45655E2; 
2;0.46466E1; 
3;0.45615E0; 

我怎樣才能做到這一點?

+0

CSV看臺爲「逗號分隔值」。你有什麼是分號分隔值(這很好,它只是不是CSV)。 – Servy

+0

@Servy我知道這很愚蠢,但在法國CSV被隔開;所以它不是真的從作者的錯誤 – Guillaume86

+0

@ Guillaume86在文本文件中使用許多稀釋劑,逗號是常見的,但其他人使用製表符,空格,管道('|'),分號,破折號,撇號,我是確信別人。它們都是文本分隔的文件,但它們不是全部的CSV文件,只有逗號分隔的文本文件。將分號作爲分隔符沒有任何問題。 – Servy

回答

18

也許最簡單的:

String csv = String.Join(
    Environment.NewLine, 
    data.Select(d => d.Key + ";" + d.Value + ";") 
); 
System.IO.File.WriteAllText(pathToCsv, csv); 

你需要添加using LINQ並至少使用.NET 3.5

+0

謝謝,效果很好:) – user1387150

+0

該解決方案將密鑰和值寫入同一個單元格 – Ateeq

8

請嘗試以下

using (var writer = new StreamWriter(@"the\path\to\my.csv")) { 
    foreach (var pair in data) { 
    writer.WriteLine("{0};{1};", pair.Key, pair.Value); 
    } 
} 

注意:這將無法工作,如果鍵或值元素可以包含一個;。如果是這樣你將需要添加一個轉義機制來處理

+0

這將添加鍵和值在同一個單元格中,更改;像這個writer.WriteLine(「{0},{1},」,pair.Key,pair.Value); – Ateeq

2
File.WriteAllLines(@"pathtocsv.csv", data.Select(x => x.Key + ";" + x.Value + ";")));