Как вы управляете выходным форматом даты при записи файла CSV с FileHelpers? - PullRequest
2 голосов
/ 23 августа 2010

Я использую библиотеку FileHelpers 2.0 для записи файла CSV с использованием класса ClassBuilder для создания типа записи.

Мои данные содержат даты, и поэтому я создаю полетипа DateTime, но когда файл генерируется, значения даты выходят в формате ddmmyyyy, а не dd/mm/yyyy, например, 28042000 вместо 28/04/2000.

Я установил DateFormat свойство класса CsvOptions для "dd/MM/yyyy", но это не помогает.

Вот код, который генерирует тип записи:

    private Type CreateRecordType()
    {
        int propertyIndex = 0;
        var csvOptions = new CsvOptions("Flat" + _report.RootType.Name, ',', Properties.Count)
                             {
                                 DateFormat = "dd/MM/yyyy"
                             };
        var classBuilder = new CsvClassBuilder(csvOptions);

        foreach(var property in Properties)
        {
            var fieldBuilder = classBuilder.FieldByIndex(propertyIndex++);
            fieldBuilder.FieldName = property.Name;
            fieldBuilder.FieldType = property.Type.Name;
        }

        return classBuilder.CreateRecordClass();
    }

1 Ответ

1 голос
/ 23 августа 2010

Оказывается, вам нужно использовать свойство Converter класса FieldBuilder.

Добавление следующего блока кода в мой метод позволяет мне настроить формат даты в получающемся файле CSV.

if (property.Type == typeof(DateTime))
{
   fieldBuilder.Converter.Kind = ConverterKind.Date;
   fieldBuilder.Converter.Arg1 = "dd/MM/yyyy";
}
...