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.