2017-06-07 4 views
0

Ich verwende die ausgezeichnete CsvHelper Bibliothek. Jetzt muss ich einem Feld explizit einige führende und nachfolgende Leerzeichen hinzufügen. Ich tue dies mit:Wie Trimmen zu vermeiden, für nur ein Feld, mit CsvHelper

private const string Space = " "; 
//.... 
Map(x => x.Bandwidth).Index(++indexCounter).ConvertUsing(item => Space + item + Space).Name("Bandwidth"); 

Das funktioniert, solange ich nicht wählen, im Allgemeinen trim mit zu

// Default value 
csv.Configuration.TrimFields = true; 

as described in the CsvHelper docs. Aber wie kann ich generell trimming, expet für ein bestimmtes Feld verwenden? Ich benutze zur Zeit Version 2.5.0.

Gibt es eine Möglichkeit, das Trimmen für nur ein Feld wegzulassen?

Edit:

ich gerade herausgefunden, dass mein Ansatz ConvertUsing vollständig gebrochen ist: CsvHelper ConvertUsing not changing output Siehe, ich werde später entweder löschen oder diese Frage zu aktualisieren.

+1

Sie sagen, dass das Trimmen auf der Eigenschaft 'Bandwidth' erfolgt, die Sie zugeordnet haben? –

+0

Probieren Sie die 3.0-Vorabversion aus. Ich denke, es wird funktionieren, wie du es erwartest. –

+0

@JoshClose Es tritt in jedem Feld auf, wenn "true" konfiguriert ist, einschließlich des Felds "Bandbreite". – Marcel

Antwort

0

Ich habe das komplett falsch, und die Zuordnung mit ConvertUsing hat nicht an erster Stelle funktioniert, und hat nichts mit der Option TrimFields = true zu tun.

Ich habe es mit einem expliziten Konverter Klasse zu arbeiten:

public class CsvExportStringSpacingConverter : DefaultTypeConverter { 
    private const string Space = " "; 

    public override string ConvertToString(TypeConverterOptions options, object value) { 
     return Space + value + Space; 
    } 
} 

Dann änderte ich meine Zuordnung zu

Map(x => x.Bandwidth) 
    .Index(++indexCounter) 
    .TypeConverter<CsvExportStringSpacingConverter>) 
    .Name(CsvExportColumnName.Bandwidth); 

Diese Lösung jetzt, das Hinzufügen führende und nachfolgende Leerzeichen für dieses Feld arbeitet, unabhängig von der Trimmoption. Seltsamerweise fügt es dieser Feldausgabe automatisch auch Anführungszeichen hinzu, auch wenn diese Option nicht aktiviert ist. Es tut jedoch nicht weh, Microsoft Excel zeigt den Feldinhalt wie erwartet, ohne Anführungszeichen, aber mit den Leerzeichen.

Verwandte Themen