2016-11-03 2 views
1

Ich habe diesen Codeblock und möchte Header einfügen, bevor es schreibt. Ich habe verschiedene Möglichkeiten ausprobiert, aber es liest und mischt die Header mit den Daten, die in die Datei geschrieben werden. Ich habe versucht, die Überschrift außerhalb des if-Blocks hinzuzufügen, aber es macht immer noch keinen Unterschied, ich habe auch versucht, es direkt nach der Erstellung der Datei, aber das gleiche Ergebnis hinzuzufügen. Ich würde gerne wissen, wie es hinzuzufügen, ohne esHeader an meine C# Excel-Ausgabedatei voranstellen

using (StreamWriter stream = new StreamWriter("cross_check.xls", true)) 
     { 

      if (stream == null) 
      { 

       MessageBox.Show("File can't be written"); 

      } 

      else 
      { 

       stream.WriteLine(); 
       stream.Write(search.Text); 
       stream.Write("\t "); 
       stream.Write(textBox1.Text); 

       MessageBox.Show("Data Added Successfully"); 

      } 
+0

Ich hätte Ihnen einen Screenshot gezeigt, aber lassen Sie mich versuchen zu erklären: Der Inhalt davon sind die Daten, die ohne Header geschrieben werden. Wenn ich versuche, die Header in die Hand zu nehmen, mischen sie sich mit den Daten. Also für zB. Ich würde Code und Beschreibung als die Überschriften haben (zwei Spalte der Daten, die geschrieben werden), wenn ich addiere, sagen wir "Katze" es geht unter "Code" und lassen Sie uns sagen "Hund" es geht unter "Beschreibung" aber wenn ich mehr addiere Daten Das Ergebnis ist das Kopieren und Verschieben der Headern neben allen Daten, die hinzugefügt wurden. – Jevon

+0

Sie können eine DataTable erstellen und Interop verwenden, um daraus eine Excel-Datei zu erstellen. Header sind also dieselben wie DataTable-Header. – Sebi

+0

Enthält Ihre 'xls' Datei das Textformat? Möchten Sie nur eine neue Zeile wie "ID, Name, Beschreibung, etwas anderes" am Anfang der Datei hinzufügen? –

Antwort

1

mit den Daten kann das Mischen Sie den Header enthalten, wenn Sie Daten schreiben Datei. Aber wenn Sie einige vorhandene Dateien, die geändert werden müssen und wenn der Inhalt Ihrer Excel-Datei Textinhalt ist (was, bezogen auf die Frage zu sein scheint), können Sie einfach File.ReadAllLines und File.WriteAllLines auf diese Weise:

var file = @"d:\file.xls"; 
var lines = System.IO.File.ReadAllLines(file).ToList(); 
lines.Insert(0, "Some text"); 
System.IO.File.WriteAllLines(file, lines); 

Mit File.ReadAllLines haben Sie alle Zeilen Ihrer Datei und Sie können auch zusätzliche Verarbeitung für Dateiinhalte durchführen. Zum Beispiel können Sie alle Zeilen durch ein Trennzeichen teilen und jede Zelle bearbeiten oder neue Spalten hinzufügen usw. Sie können das Ergebnis auch in eine Datenstruktur wie DataTable umwandeln und es in DataGridView anzeigen, um sie zu bearbeiten und sie wieder in der Datei zu speichern.

+0

Ich brauche es nur, um in die Datei zu schreiben, so dass die ReadAllLines nicht wirklich benötigt, also rate es könnte so gemacht werden: ' string path = @" Test.txt " ; // Dieser Text wird nur einmal zur Datei hinzugefügt. if (! File.Exists (Pfad)) { . string [] createText = {"Code", "Beschreibung", "NDC"}; File.WriteAllLines (Pfad, createText); } ' – Jevon

+0

ReadAllLines wird verwendet, weil Sie' Prepend' gesagt haben, also nehmen Sie an, dass Sie etwas Inhalt in der Datei haben, wenn Sie nicht haben, bedeutet es nicht, dass es nur etwas Text in der Datei speichert. –

+0

Ich habe immer noch nicht verstanden, Code-Blöcke zu kommentieren. Entschuldigen Sie den obigen Text – Jevon