2010-10-21 29 views
1

J'utilise FileHelpers pour écrire des données dans un fichier CSV. FileHelpers est génial car il me permet de formater facilement les différents champs en utilisant les convertisseurs FileHelper. Voici un exemple d'un DelimitedRecord FileHelpers:Dyanamiquement sélectionnant quels champs CSV sont écrits

[DelimitedRecord(",")] 
public class ShippedRecord 
{ 

    public string Customer; 

    #quouted as can contain ',' characters 
    [FieldQuoted] 
    public string Address; 

    [FieldConverter(ConverterKind.Date, "yyyy-MM-dd")] 
    public DateTime ShippedDate; 

    [FieldConverter(ConverterKind.Date, "yyyy-MM-dd")] 
    public DateTime ReceivedDate; 

    public string DaysTillDelivery; 

    public string DeliveryStatus; 
} 

Je voudrais que l'utilisateur soit en mesure de préciser, via un fichier de configuration qui des champs qu'ils veulent écrits dans le fichier CSV. En utilisant FileHelpers, comment modifier dynamiquement les champs qui sont écrits dans le fichier CSV? Je sais que je pourrais probablement utiliser quelque chose comme un DataTable, mais je ne sais pas comment formater les champs (valeurs entre guillemets, format de date, etc.) et je préférerais utiliser les simples convertisseurs fournis par FileHelpers si possible. Si ce n'est pas possible, comment puis-je formater les champs selon l'exemple ci-dessus en utilisant un DataTable?

Répondre

1

Vous pouvez éventuellement utiliser le CsvEngine.DataTableToCsv Method (DataTable, String, CsvOptions)overload et définir le 'CsvOptions'. Il semble certains paramètres de configuration disponibles en ce qui concerne les formats de champ, les valeurs cotées, les formats de date, etc

(je n'ai pas essayé moi-même si)

+0

J'ai regardé, mais malheureusement, le doc dit qu'il permet seulement délimiteur à définir. – FunLovinCoder

+0

@swisstony - vous pouvez définir d'autres propriétés publiques de 'CsvOptions', par exemple' CsvOptions.DateFormat'. Oui, le constructeur est limité au délimiteur. – Ahmad

+0

Merci, ça a l'air bien. Je peux voir comment je peux définir le format de la date maintenant. Cependant, comment est-ce que je spécifie que les colonnes spécifiques devraient avoir leurs valeurs citées? – FunLovinCoder