2016-05-05 5 views
0

Ich bin neu in C#, so dass ich möchte drei Werte einfügen, int,string,int getrennt durch comas, zum Beispiel 10,Jesus,1234, wenn es eingefügt werden möchte ich diese Werte in .CSV exportieren Datei,Create .CSV Datei Einfügen von Werten

Verfahren CSV-Datei zu exportieren ist diese

static void Main(string[] args) 
    { 
     Console.Write("Insert a number followed by name and finally another number \n" + "* Note: Insert all values separated by comas"); 

     int value1 = Convert.ToInt32(Console.ReadLine()); 
     string value2 = Console.ReadLine(); 
     int value3 = Convert.ToInt32(Console.ReadLine()); 


     string filePath = "Your path of the location" + "filename.csv"; 
     if (!File.Exists(filePath)) 
     { 
      File.Create(filePath).Close(); 
     } 
     var line = string.Format("{0},{1},{2}", value1, value2, value3); 
     StringBuilder sb = new StringBuilder(); 
     File.AppendAllText(filePath, line); 
     Console.ReadKey(); 
    } 
    } 
} 

Wie kann ich Werte durch Kommata und Export getrennt einfügen CSV-Datei?

+0

Ist die Frage, wie man ein Array von beliebigen Typen und nicht nur Strings verbinden? – Chris

+0

Entsprechend besagt es, dass es die Datei für Sie in benötigt erstellt: https://msdn.microsoft.com/en-us/library/ms143356%28v=vs.110%29.aspx –

+0

Die Frage ist, wie kann ich Einfügen von Werten getrennt durch Kommas, und lesen Sie es wie separate Spalten und schließlich exportieren Sie es in eine .CSV-Datei, zum Beispiel schreibe ich: 10, Jose, 1000, erste Spalte 10, zweite Jose, und die letzte sein 1000 @Chris – Eduard

Antwort

0

Erwägen Sie:

String strText; 

strText = String.Format("{0},{1},{2}", value1, value2, value3); 

File.AppendAllText(filePath, strText); 
0

Wenn Sie sich über den Inhalt nicht kümmern, die bereits ist, wenn die Datei, warum nicht nur eine neue Zeile anhängen?

static void Main(string[] args) 
{ 
    Console.Write("Insert a number followed by name and finally another number \n" + "* Note: Insert all values separated by comas"); 

    int value1 = Convert.ToInt32(Console.ReadLine()); 
    string value2 = Console.ReadLine(); 
    int value3 = Convert.ToInt32(Console.ReadLine()); 


    string filePath = "Your path of the location" + "filename.csv"; 
    File.AppendAllText(filePath, string.Join(",", value1, value2, value3) + Environment.NewLine); 

    Console.ReadKey(); 
} 

EDIT: update basierend auf Kommentar der OP

static void Main(string[] args) 
{ 
    var filePath = "Your path of the location" + "filename.csv"; 

    Console.WriteLine("Insert a number followed by name and finally another number"); 
    Console.WriteLine("* Note: Insert all values separated by commas (ex: 10,Jesus,2000)"); 
    Console.WriteLine("* Note: Enter a blank line to exit"); 

    while(true) // Ad infinitum 
    { 
     var input = Console.ReadLine(); 

     // on blank line, confirm before exiting the application 
     if (string.IsNullOrWhiteSpace(input)) 
     { 
      Console.WriteLine("Do you want to exit the application? (y/n)"); 
      if (Console.ReadLine().ToUpperInvariant() == "Y") 
       break; 

      continue; 
     } 

     // input validation : number, anything, number 
     var values = input.Split(','); 
     if (values.Length != 3 || !Regex.IsMatch(values[0], @"\d+") || !Regex.IsMatch(values[2], @"\d+")) 
     { 
      Console.WriteLine("Invalid input"); 
      continue; 
     } 

     // save save to the file 
     File.AppendAllText(filePath, string.Join(",", values) + Environment.NewLine); 
     Console.WriteLine("The values has been inserted into the csv."); 

    } // rince and repeat 
} 
+0

Das Problem ist, ich möchte nur eine Zeile pro Register zum Beispiel einfügen '10, Jesus, 2000', Wie kann ich das tun, wenn Programm Int, String, Int in verschiedenen Zeilen erwartet? – Eduard

+0

Sie möchten also "" Nummer, Text, Nummer "' in einer Zeile eingeben, und die Anwendung akzeptieren mehrere Eingaben wie diese? – Xiaoy312

+0

Ja, und danach exportieren Sie es in .csv-Datei – Eduard

0

Wenn Sie den Benutzer mögen eine Zeile durch Komma getrennt eingeben, dann müssen Sie nur Console.ReadLine() einmal anrufen. Dann können Sie String.Split() verwenden, um sie in Variablen zu bekommen.

var input = Console.ReadLine(); 
var values = input.Split(','); 
var value1 = Convert.ToInt32(values[0]); 
var value2 = values[1]; 
var value3 = Convert.ToInt32(values[2]); 

Dann drehen Sie die 3 Werte wieder in einer einzigen Zeile String.Format verwenden oder wenn Sie C# 6 dann string interpolation verwenden.

Zum Beispiel String.Format Ihr Code wäre:

var line = string.Format("{0},{1},{2}", value1, value2, value3); 

Oder für C# 6 und String-Interpolation:

var line = $"{value1},{value2},{value3}"; 

Dann können Sie diese Zeile in die Datei schreiben :

File.AppendAllText(filePath, line); 

Allerdings habe ich keine Ahnung, warum Sie Werte getrennt, um ein Komma annehmen wollen würde, spaltete sich die m in konstituierende Teile und kombinieren sie dann erneut. Warum schreiben Sie nicht einfach die Zeile, die der Benutzer in die Datei eingibt?

+0

Ich mache es wie du sagst, und ich bearbeite Code meiner Frage, das Problem ist, dass ich keine Werte wie '10, Jose, 1000' einfügen kann, weil offensichtlich Programm int zuerst lernen möchte, wie kann ich tun Lesen Sie diese Werte in einer Zeichenfolge und trennen Sie sie (ich habe eine Einschränkung, dass ich die Split-Funktion nicht verwenden kann) – Eduard

+0

Oh, also möchten Sie, dass der Benutzer die Werte wie '10, Jose, 1000' eingibt und das Programm sie austeilt ? In diesem Fall müssen Sie [String.Split()] (https://msdn.microsoft.com/en-us/library/b873y76a.aspx) verwenden und "Console.ReadLine()" nur einmal aufrufen. –

+0

Genau das möchte ich !, aber eine Einschränkung des Programms ist, dass ich die Split-Funktion nicht nutzen kann, wie kann ich darauf verzichten? – Eduard

Verwandte Themen