Ich versuche, CSV-Datei zu generieren, die 4 Spalten enthält. Eine dieser Spalten ist Name, die den durch Leerzeichen getrennten Vor- und Nachnamen enthält.Platz in CSV-Datei als Komma erkannt
Wenn ich diese Textdaten in die Datei .csv
schreibe, erkennt sie den Platz als Komma und fügt eine zusätzliche Spalte hinzu. Beispiel:
Name - First LastName
verwandelt sich in:
Name | AdditionalColumn
First | LastName
aber sollte nur
Name |
First LastName |
Datei zu generieren Ich verwende nächsten Methode:
public string Export(bool includeHeaderLine = true)
{
var sb = new StringBuilder();
//Get properties using reflection.
IList<PropertyInfo> propertyInfos = typeof(T).GetProperties();
if (includeHeaderLine)
{
//add header line.
foreach (PropertyInfo propertyInfo in propertyInfos)
{
sb.Append(propertyInfo.Name).Append(",");
}
sb.Remove(sb.Length - 1, 1).AppendLine();
}
//add value for each property.
foreach (T obj in _objects)
{
foreach (PropertyInfo propertyInfo in propertyInfos)
{
sb.Append(MakeValueCsvFriendly(propertyInfo.GetValue(obj, null))).Append(",");
}
sb.Remove(sb.Length - 1, 1).AppendLine();
}
return sb.ToString();
}
Werte, die einen Separator enthalten, müssen angegeben werden. – Kevin
Die PropertyInfo-Klasse als Aufzählung, die die Namen der Spalte zurückgibt und das Problem verursacht. Es kann nicht mit dem veröffentlichten Code behoben werden. – jdweng
Was meinst du mit "erkennen"? Ihr Code * liest die CSV-Datei nicht * schreibt nur Text in eine Datei. Alle unerwarteten Ergebnisse werden durch den Code oder die Daten verursacht. Sind Sie beispielsweise sicher, dass Ihre Eigenschaftswerte keine Kommas oder Zeilenumbrüche enthalten? –