2011-04-15 96 views
4

我想創建一個csv文件,其中每個條目由用戶輸入。一旦輸入了一組值,就應該轉到下一個值。但我似乎無法做到這一點。每次運行程序時,它都會替換以前的值。在C#中創建CSV文件#

using System; 
using System.IO; 
using System.Collections.Generic; 


namespace FileAccess 
{ 
    class MainClass 
    { 
     public static void Main(string[] args) 
     { 
      string FName; 
      string LName; 
      string Dpt; 
      string Grade; 
      string NumberOfHours; 

      string file_name = "EmployeeDetails.txt"; 

      System.IO.StreamWriter objWriter; 
      objWriter = new System.IO.StreamWriter(file_name); 

      String[] ArrayDetails = new string[5]; 

      Console.Write("Enter Emp First Name: "); 
      FName=Console.ReadLine(); 
      Console.Write("Enter Emp Last Name: "); 
      LName = Console.ReadLine(); 
      Console.Write("Enter Emp Department: "); 
      Dpt = Console.ReadLine(); 
      Console.Write("Enter Employee Grade: "); 
      Grade = Console.ReadLine(); 
      Console.Write("Enter Number Of Hours Worked: "); 
      NumberOfHours = Console.ReadLine(); 

      ArrayDetails[0] = FName; 
      ArrayDetails[1] = LName; 
      ArrayDetails[2] = Dpt; 
      ArrayDetails[3] = Grade; 
      ArrayDetails[4] = NumberOfHours; 

      // Create new list of strings 
      List<string> LDetails = new List<string>(); // Create new list of strings 
      LDetails.Add(FName); // Add string 1 
      LDetails.Add(LName); // 2 
      LDetails.Add(Dpt); // 3 
      LDetails.Add(Grade); // 4 
      LDetails.Add(NumberOfHours); // 5 
      //OutPut the data into the file 
      string LDetailsCSV = string.Join(",", LDetails.ToArray()); 
      Console.WriteLine(LDetailsCSV); 
      objWriter.Write(LDetailsCSV); 
      objWriter.Close(); 
     } 
    } 
} 

請指教。

+0

注意,如果任何你正在寫在他們逗號的字段,你需要周圍添加引號該字段(然後轉義該字段中的任何引號)。 – 2011-04-15 02:42:54

回答

9

StreamWriter constructor將覆蓋使用的是如果它存在的文件。有一個overloaded constructor到你可以傳遞一個布爾值作爲第二個參數來告訴它附加:

System.IO.StreamWriter objWriter; 
objWriter = new System.IO.StreamWriter(file_name, true); 

此外,Write方法使用的是不會追加一個換行符。如果您使用WriteLine方法,它會。

Console.WriteLine(LDetailsCSV); 
objWriter.WriteLine(LDetailsCSV); 
objWriter.Close(); 
+0

謝謝。這幾乎是我想要的。但是這並沒有創造新的路線。 – Fazleh 2011-04-15 02:01:09

+0

已更新,以顯示如何獲取新行。 – sgriffinusa 2011-04-15 02:33:26

+0

OOoOhhhh非常感謝。你是一顆寶石。 – Fazleh 2011-04-15 02:36:12

9

你必須打開追加模式的文件,像這樣:

System.IO.StreamWriter objWriter; 
objWriter = new File.AppendText(file_name); 
2

在你的情況,我認爲你最好做類似:

File.AppendAllText("EmployeeDetails.txt", string.Join(",",new [] {FName,LName,Dpt,Grade,NumberOfHours}));