원시 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
정적 메서드는 버퍼 크기, 인코딩, CSV 파일을 쓸 때 기존 파일을 덮어쓸지 여부, CSV 파일을 읽을 때 캐시를 사용할지 여부 등과 같은 일부 옵션을 지정하는 두 번째 매개 변수를 허용할 수 있습니다. .
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에서 저장한 네 가지 형식, 즉 쉼표로 구분된 형식 , ms dos , Macintosh 및 쉼표로 구분된 UTF8 형식을 모두 지원합니다.
기본적으로 CsvReaderSettings
및 CsvWriterSettings
Encoding.Default
기본 인코딩으로 사용하고 쉼표(,)를 필드 구분 기호로 사용합니다. 새 설정 개체를 만들고 이를 Create
정적 메서드에 전달하여 이러한 설정( 및 기타 일부 설정, 많은 설정이 지원됨 )을 지정할 수도 있습니다.
MIT 라이센스.