生の CSV 値と型付きオブジェクトの読み取りと書き込みをサポートする、シンプルで非常に高速な CSV リーダーおよびライター。
使い方はとても簡単です。以下に例を示します。
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 ) ;
}
}
}
CsvReader
とCsvWriter
の両方のCreate
static メソッドは、バッファー サイズ、エンコーディング、CSV ファイルを書き込むときに既存のファイルを上書きするかどうか、CSV ファイルを読み取るときにキャッシュを使用するかどうかなどのオプションを指定する 2 番目のパラメーターを受け入れることができます。 。
CsvReaderSettings
クラスのUseCache
オプションは、CSV ファイル内のほとんどの行が重複している場合に非常に役立ちます。このオプションはパフォーマンスの向上に非常に役立ちます。
また、 CsvReaderSettings
とCsvWriterSettings
どちらも、CSV ファイルの読み取りまたは書き込み時にセル区切り文字を指定できるSeparator
オプションをサポートしています。
CsvReader<T>
およびCsvWriter<T>
のジェネリック バージョンを使用する場合、 Create
静的メソッドは、 CsvReader
およびCsvWriter
による型付きオブジェクトの読み書きをサポートするIDataResolver<T>
型のパラメーターも受け入れます。
AbstractDataResolver<T>
基本的な実装を備えた基本型を提供し、そのサブクラスを作成できます。
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 ) ;
}
}
}
以前のバージョンのソース コードでは、テスト プロジェクトはWindows OS のみをサポートしていました。現在では Linux もサポートされています。
Linux でテスト コードを実行する場合 ( Ubuntu 18.04 LTS x64 でテスト済み)、まず現在のディレクトリをSky.Data.Csv.Testに変更してから、ターミナルで次のコマンドを実行します。
Sky.Data.Csv.Test$ dotnet run -c Release --project Sky.Data.Csv.Test.Core.csproj
これは、 CsvReader
とCsvWriter
のシンプルだが高速な実装です。
この CsvReader は、最新バージョンの Excel で保存された 4 つの形式 (カンマ区切り、 ms dos 、 macintosh 、およびカンマ区切り UTF8)をすべてサポートしています。
デフォルトでは、 CsvReaderSettings
およびCsvWriterSettings
デフォルトのエンコードとしてEncoding.Default
使用し、フィールド区切り文字としてカンマ (,) を使用します。新しい設定オブジェクトを作成し、それをCreate
静的メソッドに渡すことで、これらの設定 (およびその他の設定、多くの設定がサポートされています) を指定することもできます。
MITライセンス取得済み。