2012-10-29 65 views
0

我一直在尋找幾個小時如何做到這一點,我認爲最好的想法是爲每個循環提出一個,然後將其傳遞到Stream Writer。從列表框保存到c#Win中的一個.csv文件Win表格

我嘗試了多種不同的方式,我想我可能只是不夠好,看不到我的錯誤,如果有人能夠幫助,這是偉大的。

當前文件被創建,我得到的唯一輸出是第一行的「System.Windows.Forms.ListBox + ObjectCollection」,這表明我沒有正確傳遞值。

下面的代碼:

 private void btnSave_Click(object sender, EventArgs e) 
    { 
     StreamWriter myOutputStream = new StreamWriter("Myfile.csv"); 
     myOutputStream.WriteLine(lstBox.Items); 
     myOutputStream.Close(); 
     //foreach (object item in lstBox.Items) 
     //string listString = lstBox.SelectedItem.ToString(); 
     //StreamWriter streamBox = File.CreateText(@"testfile.csv"); 
     //streamBox.Write(listString); 
     //streamBox.Close(); 
     //if (SaveFileDialog.ShowDialog() == DialogResult.OK) 
     //{ 
     // System.IO.StreamWriter streamBox = new System.IO.StreamWriter(SaveFileDialog); 
     // foreach (object item in lstBox.Items) 
     //  streamBox.WriteLine(item.ToString()); 
     // streamBox.Close(); 
     //} 
    } 

全部註釋掉部分事情我已經在過去嘗試過。但現在,我認爲最簡單的方法是前三條線。

感謝您的輸入。

回答

3

您正在寫出listBox.Items,這是一個ListBoxObjectCollection。你需要一個foreach循環寫入每個項:

StreamWriter myOutputStream = new StreamWriter("Myfile.csv"); 

foreach (var item in lstBox.Items) 
{ 
    myOutputStream.WriteLine(item.ToString()); 
} 

myOutputStream.Close(); 

另外請注意,您可以使用using塊這裏:

using (StreamWriter myOutputStream = new StreamWriter("Myfile.csv")) 
{ 
    foreach (var item in lstBox.Items) 
    { 
     myOutputStream.WriteLine(item.ToString()); 
    } 
} 
+0

非常感謝,完美的工作。不知道爲什麼我看不到。 –

0

首先,什麼是在ListBox?如果列表框中的項目只是字符串項目,那麼您可以執行以下操作:

StreamWriter myOutputStream = new StreamWriter("Myfile.csv"); 
foreach (string item in lstBox.Items) { 
    myOutputStream.WriteLine(item); 
} 
myOutputStream.Close();