Ein einfacher und extrem schneller CSV-Leser und -Schreiber, der das Lesen und Schreiben von CSV-Rohwerten und typisierten Objekten unterstützt.
Es ist wirklich einfach zu bedienen. Nachfolgend ein Beispiel:
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 ) ;
}
}
}
Die statische Methode Create
“ von CsvReader
und CsvWriter
kann einen zweiten Parameter akzeptieren, der einige Optionen wie Puffergröße, Kodierung, ob die vorhandene Datei beim Schreiben einer CSV-Datei überschrieben werden soll oder nicht und ob beim Lesen einer CSV-Datei der Cache verwendet werden soll usw. angibt .
Die UseCache
Option in der CsvReaderSettings
-Klasse ist wirklich nützlich, wenn die meisten Zeilen in der CSV-Datei doppelt vorhanden sind. Diese Option trägt wesentlich zur Verbesserung der Leistung bei.
Außerdem unterstützen sowohl CsvReaderSettings
als auch CsvWriterSettings
eine Separator
, mit der Sie das Zelltrennzeichen beim Lesen oder Schreiben von CSV-Dateien angeben können.
Wenn Sie die generische Version von CsvReader<T>
und CsvWriter<T>
verwenden, akzeptiert die statische Methode „ Create
auch einen Parameter vom Typ IDataResolver<T>
, der CsvReader
und CsvWriter
zum Lesen und Schreiben typisierter Objekte unterstützt.
Der AbstractDataResolver<T>
stellt einen Basistyp mit einer grundlegenden Implementierung bereit und Sie können davon Unterklassen erstellen.
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 ) ;
}
}
}
In früheren Versionen der Quellcodes unterstützt das Testprojekt nur Windows-Betriebssysteme. Jetzt unterstützt es auch Linux.
Wenn Sie die Testcodes unter Linux ausführen möchten ( getestet unter Ubuntu 18.04 LTS x64 ), ändern Sie zunächst das aktuelle Verzeichnis in Sky.Data.Csv.Test und führen Sie dann die folgenden Befehle im Terminal aus:
Sky.Data.Csv.Test$ dotnet run -c Release --project Sky.Data.Csv.Test.Core.csproj
Dies ist eine einfache, aber schnelle Implementierung von CsvReader
und CsvWriter
.
Dieser CsvReader unterstützt alle vier Formate, die von der neuesten Version von Excel gespeichert werden: Komma getrennt , MS DOS , Macintosh und Komma getrennt UTF8 .
Standardmäßig verwenden CsvReaderSettings
und CsvWriterSettings
Encoding.Default
als Standardkodierung und Komma (,) als Feldtrennzeichen. Sie können diese Einstellungen ( und einige andere Einstellungen, viele Einstellungen werden unterstützt ) auch angeben, indem Sie ein neues Einstellungsobjekt erstellen und es an die statische Methode Create
“ übergeben.
MIT-Lizenz.