Creating a CSV file in C #

I am trying to create a csv file where each entry is entered by the user. When one set of values ​​is entered, it should move on to the next. However, it seems I can not do this. Each time I run the program, it replaces the previous values.

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(); } } } 

Some of them will advise.

+4
source share
3 answers

The StreamWriter constructor will overwrite the file that you use if it exists. There is an overloaded constructor in which you can pass a boolean value as a second argument to tell it:

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

In addition, the Write method that you use will not add line breaks. If you use the WriteLine method, it will.

  Console.WriteLine(LDetailsCSV); objWriter.WriteLine(LDetailsCSV); objWriter.Close(); 
+9
source

You need to open the file in add mode, for example:

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

In your case, I think you'd better do something like:

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

Source: https://habr.com/ru/post/1348200/


All Articles