2017-06-07 62 views
0

我正在使用优秀的CsvHelper库房。现在我需要明确地向领域添加一些前导和尾随空格。我做到这一点使用:如何仅使用CsvHelper省略一个字段的修整

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

这个工作,只要我不选择一般剪裁用

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

as described in the CsvHelper docs。但我怎样才能通常使用修剪,excpet特定领域?目前我正在使用2.5.0版本。

有没有办法只为一个字段省略修整?

编辑:

我刚刚发现,使用ConvertUsing完全打破了我的方法:见CsvHelper ConvertUsing not changing output我会选择删除或更新这个问题。

+1

你是否在修改已映射的'Bandwidth'属性? –

+0

尝试3.0预发布。我认为它会像你期望的那样工作。 –

+0

@JoshClose当配置为“真”时,包括“带宽”字段在每个字段发生。 – Marcel

回答

0

我得到了这个完全错误的,与ConvertUsing映射不起作用的第一个地方,并且与选项TrimFields = true没有任何关系。

我得到它以显式转换器类工作:

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

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

然后,我改变了我的映射

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

这个解决方案现在工作,增加前后的空格此字段,不管修剪选项如何。 奇怪的是,它也自动为此字段输出添加引号,即使未启用此选项。但它并没有伤害,但Microsoft Excel按预期显示字段内容,不带引号,但带有空格。

相关问题