Pembaca dan penulis CSV sederhana dan sangat cepat yang mendukung membaca dan menulis nilai CSV mentah dan objek yang diketik.
Ini sangat mudah digunakan. Berikut ini contohnya:
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 ) ;
}
}
} Metode Create statis dari CsvReader dan CsvWriter dapat menerima parameter kedua yang menentukan beberapa opsi seperti ukuran buffer, pengkodean, apakah akan menimpa file yang ada saat menulis file CSV atau tidak dan apakah akan menggunakan cache saat membaca file CSV atau tidak, dll. .
Opsi UseCache di kelas CsvReaderSettings sangat berguna ketika sebagian besar baris dalam file CSV adalah duplikat. Opsi ini banyak membantu untuk meningkatkan kinerja.
CsvReaderSettings dan CsvWriterSettings juga mendukung opsi Separator sehingga Anda dapat menentukan Karakter Pemisah Sel saat membaca atau menulis file CSV.
Jika Anda menggunakan versi generik CsvReader<T> dan CsvWriter<T> , metode Create static juga akan menerima parameter tipe IDataResolver<T> yang mendukung CsvReader dan CsvWriter untuk membaca dan menulis objek yang diketik.
AbstractDataResolver<T> menyediakan tipe dasar dengan beberapa implementasi dasar dan Anda dapat membuat subkelasnya.
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 ) ;
}
}
} Pada kode sumber versi sebelumnya, proyek pengujian hanya mendukung OS Windows. Sekarang juga mendukung Linux.
Jika Anda ingin menjalankan kode pengujian di Linux ( diuji pada Ubuntu 18.04 LTS x64 ), pertama-tama ubah direktori saat ini ke Sky.Data.Csv.Test lalu jalankan perintah berikut di terminal:
Sky.Data.Csv.Test$ dotnet run -c Release --project Sky.Data.Csv.Test.Core.csproj
Ini adalah implementasi CsvReader dan CsvWriter yang sederhana namun cepat.
CsvReader ini mendukung keempat format yang disimpan oleh versi terbaru Excel, yaitu koma dipisahkan , ms dos , macintosh dan dipisahkan koma UTF8 .
Secara default, CsvReaderSettings dan CsvWriterSettings menggunakan Encoding.Default sebagai pengkodean default dan koma (,) sebagai pemisah bidang. Anda juga dapat menentukan pengaturan ini ( dan beberapa pengaturan lainnya, banyak pengaturan yang didukung ) dengan membuat objek pengaturan baru dan meneruskannya ke metode Create statis.
Berlisensi MIT.