Avez-vous déjà utilisé CsvHelper ?
Bonjour,
Comme l'indique l'intitulé je suis à la recherche d'utilisateur de cette superbe Class, mais qui manque cruellement de documentation.
Pour ceux qui ont déjà exploité cette outil :
Je cherche à exploiter tel ou tel autre ClassMap en fonction de l'entête du fichier.
Avez vous une idée sur la méthodologie ?
Merci.
Pour ceux qui ne connaisse pas cela permet de transformer votre contenu CSV en un objet ou vice-versa, en fonction d'une class.
Citation:
Votre fichier CSV
Code:
1 2 3 4 5 6 7 8 9 10 11
|
personId | FName | LName | BookId | BookName | PageId
1 | name1 | name1 | 1 | book1 | 1
1 | name1 | name1 | 1 | book1 | 2
1 | name1 | name1 | 1 | book1 | 3
1 | name1 | name1 | 2 | book2 | 1
1 | name1 | name1 | 2 | book2 | 2
2 | name2 | name2 | 3 | book3 | 1
2 | name2 | name2 | 3 | book3 | 2
2 | name2 | name2 | 3 | book3 | 3 |
Votre Class où vous n'êtes pas obligé de déclarer l'ensemble de vos colonnes
Code:
1 2 3 4 5 6 7
|
public class DataBook
{
public string? personId { get; set; }
public string? FName { get; set; }
public string? BookId { get; set; }
} |
Votre appel :
Code:
1 2 3 4 5 6 7
|
using (CsvReader csv = new(reader, config))
{
List<DataBook>? recordsImport = csv.GetRecords<DataBook>().ToList();
} |
Vous pouvez même exploitez des "schémas" sans modifier votre class si vous ne souhaitez pas exploiter l'une de vos colonnes dans un cas précis.
Code:
1 2 3 4 5 6
|
using (CsvReader csv = new(reader, config))
{
csv.Context.RegisterClassMap<ImportShort >();
List<DataBook>? recordsImport = csv.GetRecords<DataBook>().ToList();
} |
Code:
1 2 3 4 5 6 7 8 9 10
|
public class ImportShort : ClassMap<DataBook>
{
public ImportShort ()
{
Map(m => m.personId);
Map(m => m.FName).Ignore();
Map(m => m.BookId);
}
} |
Il plein d'autre mécanisme.