2016-04-27 10 views
0

Ich habe einige CSV-Datei enthält verschiedene Daten, ich möchte all diese CSV-Datei in eine ultimative CSV-Datei, die mehrere Blätter enthält, unter denen diese mehrere CSV enthalten sind, zu kombinieren. Bis jetzt mein Code unten holt Daten aus dem Verzeichnis und vereint alle CSV in eine große CSV-Datei Datei, wo sie die Daten anhängt, die ich möchte nicht, stattdessen i muiltiple Blatt in einer Datei möchten ..Mutiliple CSV zu einer CSV-Datei mit Muiltiple CSV-Blättern

private void combineallcsv() 
{ 
    string txtConsolidated_OS_CSV = "C:\\NWDLS\\new"; 
    if (txtConsolidated_OS_CSV != "") 
    { 
     int counter = 0; 

     string[] files = (Directory.GetFiles(txtConsolidated_OS_CSV.Trim())); 
     foreach (var file in files) 
     { 
      StringBuilder sb = new StringBuilder(); 
      string filename = Path.GetFileNameWithoutExtension(file); 
      if (file.EndsWith(".csv")) 
      { 
       string[] rows = File.ReadAllLines(file); 
       for (int i = 0; i < rows.Length; i++) 
       { 
        if (i == 0) 
        { 
         if (counter == 0) 
         { 
          sb.Append(rows[i] + "\n"); 
          counter++; 
         } 
        } 
        else 
        { 
         sb.Append(rows[i] + "\n"); 
        } 
       } 
      } 
      string csvfile = txtConsolidated_OS_CSV + "\\Merged_OS.csv"; 

      if (File.Exists(csvfile)) 
      { 
       File.AppendAllText(csvfile, sb.ToString()); 
       sb.Clear(); 
      } 
      else 
      { 
       File.WriteAllText(csvfile, sb.ToString()); 
       sb.Clear(); 
      } 
      //using (StreamWriter writer = new StreamWriter(csvfile, true)) 
      //{ 
      // writer.Write(sb.ToString()); 
      // writer.Dispose(); 
      // writer.Close(); 
      //} 
     } 
     counter = 0; 
    } 
} 
+1

CSV-Dateien können nicht mehrere Blätter sein - sie sind Wand von Komma getrenntem Text. Wenn Sie wollen, dass es in Excel mehrschichtig ist, müssen Sie es in Excel schreiben. – BugFinder

+0

@BugFinder CSV ist eine Erweiterungsdatei, die in Excel S/W geöffnet wird, und ja, es enthält mehrere Blätter von Werten, die in Komma getrennt sind. –

Antwort

2

Es gibt keine "Blätter" in CSV-Dateien. CSV-Dateien sind nur Textzeilen, in denen Felder durch ein bestimmtes Zeichen getrennt sind. Das ist alles.

Sie können VSTO Office Interop- oder ADO.NET-Treiber verwenden, um "echte" Excel-Tabellen zu erstellen.

+0

Es ist auch erwähnenswert, dass Sie, wenn Sie bereit sind, vom Standard-CSV-Format abzuweichen, Ihre eigene Art der Handhabung von Blättern in einer CSV-Datei erstellen können. Sie könnten ein spezielles Zeichen definieren, um jedes "Blatt" von CSV-Daten zu trennen. Sie würden das Rad ein wenig nachbauen, aber es ist eine Option. – Jaguir

+1

@Jared Natürlich könnte man, aber wahr zu dem Sprichwort "Wenn alles, was Sie haben, ein Hammer ist, alle Probleme wie Nägel aussehen" Leute denken CSV = Excel, nur, wenn sie einen Doppelklick auf Excel öffnet. Und Excel kann Blätter haben, also CSV = Excel = Blätter. Aber das ist nicht der Fall. Und Excel liest eine Datei nicht so, wie Sie sie beschreiben. Und es gibt keine Möglichkeit, eine CSV-Datei zu erstellen, die dazu führt, dass Excel mehrere Blätter verwendet. –

+0

Ich stimme zu. Ich habe nur auf das unwahrscheinliche Szenario hingewiesen, dass er seine eigene Methode entwickeln könnte, wenn seine Umstände es erlauben. :) – Jaguir