2017-08-02 29 views
-1

我有這個代碼可以創建一個CSV文件(我在This StackOverflow Post上找到)。c#SaveFileDialog CSV添加來自代碼的另一部分的變體

private void saveCSV_Click(object sender, EventArgs e) 
{ 
    SaveFileDialog saveFileDialog1 = new SaveFileDialog(); 
    string filter = "CSV file (*.csv)|*.csv| All Files (*.*)|*.*"; 
    saveFileDialog1.Filter = filter; 
    const string header = "Header1, Header2, Header 3"; 
    StreamWriter writer = null; 

    if (saveFileDialog1.ShowDialog() == DialogResult.OK) 
    { 
     filter = saveFileDialog1.FileName; 
     writer = new StreamWriter(filter); 

     writer.WriteLine(header); 
     writer.Close(); 
    } 
} 

我希望做的是寫一個二線到CSV文件,從名爲

private void parseFile_Click(object sender, EventArgs e) 

其中有許多字符串,包括標題,名字和姓氏的部分包含數據。

我已經試過

string LineOneData = Title, Firstname, Lastname; 

然後

writer.Write(header); 

行後加入

writer.Write(LineOneData); 

,但我得到的消息(在新的串線)「的名稱標題在當前上下文中不存在「...我認爲這是因爲對話框不知道什麼parseFile_Click部分。

請問我能得到一些建議嗎?

+1

你是什麼意思「包含來自'private void parseFile_Click(object sender,EventArgs e)''的數據。這是一個無效函數,所以沒有返回值。你想寫的內容實際存儲在哪裏(是否有一個字符串變量)?你能不能顯示'parseFile_Click'的內容? –

+0

'string LineOneData = Title,Firstname,Lastname;'是非法語法,因此編譯器錯誤。你想做什麼?這三個標識符變量是否要連接爲一個字符串?如果是這樣,你必須使用'+號,而不是逗號。 –

回答

0

如果標題,名字和姓氏的變量,你必須首先改變

string LineOneData = Title, Firstname , Lastname; 

string LineOneData = Title + "," + Firstname + "," + Lastname; 

string LineOneData = string.Format("{0}, {1}, {2}", Title, Firstname, Lastname); 
0

在術語的速成課程。它被稱爲函數或方法,而不是部分。現在解釋您遇到的問題並提出解決方案。

private void saveCSV_Click(object sender, EventArgs e) 
{ 
    SaveFileDialog saveFileDialog1 = new SaveFileDialog(); 
    string filter = "CSV file (*.csv)|*.csv| All Files (*.*)|*.*"; 
    saveFileDialog1.Filter = filter; 
    const string header = "Header1, Header2, Header 3"; 
    StreamWriter writer = null; 

    if (saveFileDialog1.ShowDialog() == DialogResult.OK) 
    { 
     filter = saveFileDialog1.FileName; 
     using(writer = new StreamWriter(filter)) 
     { 
      writer.WriteLine(header); 
      writer.Close(); 
     } 
    } 
} 

然後在你的其他功能,parseFile_Click,下面幾行添加到它

string LineOneData = Title + "," + Firstname + "," + Lastname; 
File.AppendAllText(filter, LineOneData); 

這將信息附加到生成CSV以上。你確實需要確保csv已經被保存了。否則,您可以通過檢查過濾器是否指向有效文件來防範它,例如!string.IsNullOrEmpty(filter) && File.Exists(filter)

+0

Tanveer Badar,抱歉使用錯誤的術語(我還在學習)。我已經嘗試了你所建議的代碼,但我被告知在當前上下文中不存在「過濾器」。你能建議嗎? –

+0

好的,我認爲,與大家在這裏的幫助,以及更多的谷歌,我已經找到了一個解決方案。如果我添加'string parsedTitle {get;組; }' 'string parsedFirstName {get;組; }'在Form1方法中,然後將它們加載到parseFile_Click方法'parsedTitle = Title;'parsedFirstName = FirstName;'中,然後我可以在saveFileDialog1方法'string LineOneData = parsedTitle +「,」+ parsedFirstName; ''writer.WriteLine(LineOneData);' –

+1

我希望你只是爲了做一些家庭作業。 –

相關問題