2011-04-15 50 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}));