在C#中创建CSV文件

我正在尝试创建一个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 LDetails = new List(); // 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(); } } } 

有人建议。

StreamWriter构造函数将覆盖您正在使用的文件(如果存在)。 有一个重载的构造函数 ,您可以将布尔值作为第二个参数传递给它,以告诉它追加:

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

此外,您正在使用的Write方法不会附加换行符。 如果你使用WriteLine方法,它会。

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

您必须以附加模式打开文件,如下所示:

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

在你的情况下,我认为你最好做以下事情:

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