Un lecteur et graveur CSV simple et extrêmement rapide qui prend en charge la lecture et l'écriture de valeurs CSV brutes et d'objets saisis.
C'est vraiment simple à utiliser. Voici un exemple :
using Sky . Data . Csv ;
//reader and writer sample
using ( var reader = CsvReader . Create ( "path-to-file" ) ) {
using ( var writer = CsvWriter . Create ( "path-to-file" ) ) {
foreach ( var row in reader ) {
writer . WriteRow ( row ) ;
}
}
}
La méthode statique Create
de CsvReader
et CsvWriter
peut accepter un deuxième paramètre spécifiant certaines options telles que la taille du tampon, l'encodage, l'écrasement ou non du fichier existant lors de l'écriture d'un fichier CSV et l'utilisation ou non du cache lors de la lecture d'un fichier CSV, etc. .
L'option UseCache
de la classe CsvReaderSettings
est très utile lorsque la plupart des lignes du fichier CSV sont en double. Cette option aide beaucoup à améliorer les performances.
De plus, CsvReaderSettings
et CsvWriterSettings
prennent en charge une option Separator
qui vous permet de spécifier le caractère de séparation de cellule lors de la lecture ou de l'écriture de fichiers CSV.
Si vous utilisez la version générique de CsvReader<T>
et CsvWriter<T>
, la méthode statique Create
acceptera également un paramètre de type IDataResolver<T>
qui prend en charge CsvReader
et CsvWriter
pour lire et écrire des objets saisis.
AbstractDataResolver<T>
fournit un type de base avec une implémentation de base et vous pouvez en créer des sous-classes.
public class Student
{
public String Name { get ; set ; }
public String Address { get ; set ; }
public Int32 Height { get ; set ; }
public DateTime Birthday { get ; set ; }
}
public class StudentResolver : AbstractDataResolver < Student >
{
public override Student Deserialize ( List < String > data )
{
var culture = CultureInfo . InvariantCulture ;
return new Student
{
Name = data [ 0 ] ,
Height = Int32 . Parse ( data [ 1 ] ) ,
Birthday = DateTime . ParseExact ( data [ 2 ] , "yyyy-MM-dd" , culture ) ,
Address = data [ 3 ] ,
} ;
}
public override List < String > Serialize ( Student data )
{
return new List < String >
{
data . Name ,
data . Height . ToString ( ) ,
data . Birthday . ToString ( "yyyy-MM-dd" ) ,
data . Address ,
} ;
}
}
static void Main ( String [ ] args )
{
var dataResolver = new StudentResolver ( ) ;
var csvPath = "path-to-csv-file" ;
using ( var reader = CsvReader < Student > . Create ( csvPath , dataResolver ) )
{
foreach ( var student in reader )
{
Console . WriteLine ( student . Address ) ;
}
}
}
Dans les versions antérieures des codes sources, le projet de test prend uniquement en charge le système d'exploitation Windows. Désormais, il prend également en charge Linux.
Si vous souhaitez exécuter les codes de test sous Linux ( testés sur Ubuntu 18.04 LTS x64 ), modifiez d'abord le répertoire actuel en Sky.Data.Csv.Test , puis exécutez les commandes suivantes dans le terminal :
Sky.Data.Csv.Test$ dotnet run -c Release --project Sky.Data.Csv.Test.Core.csproj
Il s'agit d'une implémentation simple mais rapide de CsvReader
et CsvWriter
.
Ce CsvReader prend en charge les quatre formats enregistrés par la dernière version d'Excel, à savoir les formats séparés par des virgules , ms dos , macintosh et UTF8 séparés par des virgules .
Par défaut, CsvReaderSettings
et CsvWriterSettings
utilisent Encoding.Default
comme codage par défaut et la virgule (,) comme séparateur de champ. Vous pouvez également spécifier ces paramètres ( et certains autres paramètres, de nombreux paramètres sont pris en charge ) en créant un nouvel objet de paramètre et en le transmettant à la méthode statique Create
.
Licence MIT.