2010-08-23 18 views
2

J'utilise la bibliothèque FileHelpers 2.0 pour écrire un fichier CSV en utilisant la classe ClassBuilder pour générer un type d'enregistrement.Comment contrôler le format de sortie d'une date lors de l'écriture d'un fichier CSV avec FileHelpers?

Mes données contient des dates et je créer un champ de type DateTime, mais lorsque le fichier est généré les valeurs de date viennent dans le format ddmmyyyy plutôt que par exemple dd/mm/yyyy28042000 au lieu de 28/04/2000.

J'ai mis la propriété DateFormat de la classe CsvOptions à "dd/MM/yyyy" mais cela n'aide pas.

Voici le code qui génère le type d'enregistrement:

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(); 
    } 

Répondre

1

Il se avère que vous devez utiliser la propriété Converter de la classe FieldBuilder. L'ajout du bloc de code suivant à ma méthode me permet de personnaliser le format de date dans le fichier CSV résultant.

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