2016-06-23 44 views
-1

Ich habe eine Funktion, die eine Datentabelle in eine CSV-Datei exportiert. Und nach jeder zweiten Zeile wird eine Leerzeile eingefügt. DieseHinzufügen von Leerzeilen zwischen

ist die Ausgabe in eine TXT-Datei

Assets|Profit Center|Plant|Asset Class|Depr Account|Cost Center|Inventory Number|Location|Cap Date|Last Inventoried|Deactivation Date|Asset Description|Acquis Value|Monthly Depriciation|O dep posted|Accum Dep|Book Value|Serial|Inventory Note|Inventory Comments|LFAC|Room|Supplier Name|Manufacturer of Asset|EFO|Asset Main Text|EGM|Person Responsible|TOP Sider|Type Name & Eccn Number|Std|Class|Inventory Status|Inventoried By|Prior Room|Comments 

1007309|DAHQ|DAHQ|32752|3375|DAHQB00760|QJQX0290E1|P229|3/25/1990|4/30/2013|0|CTC, West Wing Land Improvements|0| - |0| - | - |0|0|-|Thompson Jennifer|CTC|CTCWBLDG|X/X|0/0/X/Huntzinger,Joe|LAND IMPROVEMENTS|-|-|-|0|3275|Land Improvements|NOT FOUND||| 

1007313|DAHQ|DAHQ|32752|3375|DAHQB00760|QJQX0890E1|P229|9/25/1990|4/30/2013|0|CTC, West Wing Land Improvements|0| - |0| - | - |0|0|-|Thompson Jennifer|CTC|CTCWBLDG|X/X|0/0/X/Huntzinger,Joe|LAND IMPROVEMENTS|-|-|-|0|3275|Land Improvements|NOT FOUND||| 

Hier ist der Code

try 
{ 
    data.Tables[tableMaster].Columns.Remove("ID"); 
} 
catch 
{ 
} 

StringBuilder sb = new StringBuilder(); 
IEnumerable<string> columnNames = data.Tables[tableMaster].Columns 
    .Cast<DataColumn>() 
    .Select(column => column.ColumnName); 
sb.AppendLine(string.Join("|", columnNames)); 

foreach (DataRow row in data.Tables[tableMaster].Rows) 
{ 
    IEnumerable<string> fields = row.ItemArray.Select(field => field.ToString()); 
    sb.AppendLine(string.Join("|", fields)); 
} 
File.WriteAllText("test.txt", sb.ToString()); 

Wie kann ich die Leerzeilen vermeiden?

+0

Was verwenden Sie diese Daten zu erhalten, Open XML? –

+0

@BlueEyedBehemoth Ich fülle diese Daten von einem csv ursprünglich dann aktualisiert mein Programm einige Spalten. Danach möchte ich es einfach exportieren – DisarmedDevo

Antwort

0

Hier ist eine Lösung, die eine String-Liste anstelle von String-Builder:

List<String> strlst = new List<String>(); 
strlst.Add(String.Join("|", data.Tables[tableMaster].Columns.Cast<DataColumn>().Select(x => x.ColumnName))); 

foreach (DataRow row in data.Tables[tableMaster].Rows) 
{ 
    IEnumerable<string> fields = row.ItemArray.Select(field => field.ToString()); 
    strlst.Add(string.Join("|", fields)); 
} 
File.WriteAllLines("test.txt", strlst); 
+0

Wenn ich die test.txt zurück zu einem .csv konvertiere, fügt es immer noch eine leere Zeile zwischen jeder Zeile von Daten. – DisarmedDevo

+0

Wie konvertieren Sie? – Abbas

+0

was meinst du? – DisarmedDevo