2016-07-12 3 views
0

Wir haben einen Desktop-Timer erstellt, mit dem unsere Benutzer ihre täglichen Aufgaben und Projekte verfolgen. Es gibt Daten in eine CSV-Datei aus, wenn sie die Anwendung schließen. Gelegentlich müssen sie die CSV-Datei manuell aktualisieren, um entweder Zeit zu nehmen oder Zeit hinzuzufügen. Wenn sie dies im aktuellen Zustand tun, nachdem sie gespeichert haben, werden alle Spalten in Spalte A zusammengefasst. Ich weiß nicht, was das verursacht, und habe versucht, die Codierung zu recherchieren, konnte aber nichts finden, was ich mit diesem Szenario in Verbindung bringen könnte.Spalten, die kombinieren, wenn C# an csv anfügt

Voll form1.cs: full form1.cs code

Code csv bezogen werden:

//event handler for the closing event -- the output dump is here so the timer can be used all day and captures even on an accidetnal close 
    private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
    { 

     //if the file exists we don't need to write the headers so we can skip the additional line write and just append the data created 
     if (File.Exists(dskPath + "\\" + agentName + ".csv")) 
     { 
      using (var file = new StreamWriter(dskPath+"\\" + agentName + ".csv", true, Encoding.UTF8)) 
      { 

       foreach (var data in TimerData) 
       { 
        file.WriteLine(string.Join(",", data.agentID, data.agentStatus, data.statusTime, data.startTime, data.currentDate, data.hydraTask, data.clientname, data.publishdate, data.notes)); 
       } 
       file.Close(); 
       notifyIcon1.Icon = null; 
       MessageBox.Show("The file for " + agentName + " has been written to G:\\Communicator Ops\\Population Health\\Pop Process\\Time Tracking\\User Data.", "Application Closed"); 
      } 
     } 
     //if the file hasn't been created before we can drop the headers in for the columns 
     else 
     { 
      using (var file = new StreamWriter(dskPath +"\\"+ agentName + ".csv", true, Encoding.UTF8)) 
      { 
       file.WriteLine(string.Join(",", "Agent ID", "Agent Status", "Status Time", "Start Time", "Current Date", "hydra task number", "Client Name", "Publish Date", "Notes")); 
       foreach (var data in TimerData) 
       { 
        file.WriteLine(string.Join(",", data.agentID, data.agentStatus, data.statusTime, data.startTime, data.currentDate, data.hydraTask, data.clientname, data.publishdate, data.notes)); 
       } 
       file.Close(); 
       notifyIcon1.Icon = null; 
       MessageBox.Show("The file for " + agentName + " has been written to your desktop.","Application Closed"); 
      } 
     } 
    } 

Antwort

0

Ich habe eine Theorie über das, was möglicherweise auftreten werden. Der C# -Code sieht OK aus. Ich denke, die Benutzer öffnen die Datei auf eine Weise, die Sie nicht erwartet haben. Ich denke, dass sie Folgendes tun:

1) Excel öffnen und dann zum Speicherort der Datei navigieren. Dadurch wird dieser Dialog führen zu öffnen: enter image description here

2) Sie treffen auf Weiter und 2. enter image description here

Bei diesem Schritt erhalten sie Tab als Trennzeichen ausgewählt verlassen werden kann, die nicht korrekt ist. Hier können sie Ihr Problem verursachen.

Sie schlugen Weiter wieder

3) enter image description here

Schließlich treffen sie auf Fertig stellen und alles endet in Spalte A. enter image description here

Wenn ich auf das Desktop-Symbol klicken verdoppeln scheint es Arbeit OK. Wenn ich Komma als Trennzeichen auswähle und Tab lösche, funktionierte das auch.

Das ist meine Vermutung. Hoffentlich hilft dir das weiter.

+0

Danke für Ihre Theorie. Sie haben jedoch keine dieser Eingabeaufforderungen erhalten, und heute können wir nicht mehr replizieren, um weitere Details hinzuzufügen. Wenn das Problem erneut auftritt, füge ich weitere Details hinzu, und wenn dies nicht innerhalb einer Woche geschieht, schließe/schließe ich die Frage, je nachdem, welcher der beste Workflow ist. – mustachematt

Verwandte Themen