C # 용 CSV 파서 / 리더? [닫은]


89

자유 라이선스하에 사용 가능한 CSV 파서의 훌륭하고 무료 구현이 있습니까? Java 용 SuperCSV의 일부 , 아마도 포트?



5
Microsoft.VisualBasic.FileIO.TextFieldParser 사용;


1
건설적이지 않습니까? 그래서 관리자는 너무 미쳤습니다. 이것은 매우 유용한 질문입니다.
리처드

답변:


70

24
FileHelpers (최소한 CSV의 경우)는 "소스 (파일)의 레코드에 매핑되는 클래스를 정의", "레코드 매핑 클래스를 선언해야합니다"등을 요구하며 이는 그렇게 뜨겁지 않습니다. 예상되는 열 수를 미리 모르는 상태에서 CSV를 DataTable로 변환하고 싶습니다.
Konrad Morawski 2011

53

CodeProject에 멋진 구현이 있습니다 .

145 개의 필드와 50,000 개의 레코드를 포함하는 45MB CSV 파일로 더 많은 정보를 제공하기 위해 독자는 약 30MB / 초를 처리했습니다. 전체적으로 1.5 초가 걸렸습니다! 기계 사양은 P4 3.0GHz, 1024MB입니다.


(내 +1 가져 오기) : 방금 53Mb 파일에서 lumenworks Fast CSV 리더를 망가 뜨 렸습니다. 43,000 행 후 라인 캐싱이 실패하고 버퍼를 스크램블 한 것 같습니다. 시도하고 Microsoft.VisualBasic.FileIO.TextFieldParse트릭을 수행했습니다.
Gone Coding

11

CSV 파일을 DataTable에로드 할 수 있습니다.

샘플 코드-

static DataTable CsvToDataTable(string strFileName)
{
    DataTable dataTable = new DataTable("DataTable Name");

    using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0; Data Source = " + Directory.GetCurrentDirectory() + "; Extended Properties = \"Text;HDR=YES;FMT=Delimited\""))
    {
        conn.Open();
        string strQuery = "SELECT * FROM [" + strFileName + "]";
        OleDbDataAdapter adapter = 
            new System.Data.OleDb.OleDbDataAdapter(strQuery, conn);
        adapter.Fill(dataTable);
    }
    return dataTable;
}

프로젝트를 x86 프로세서로 컴파일해야합니다. x64에서는 작동하지 않습니다.


1
기본 제공 ODBC 또는 OLEDB 라이브러리를 유지하고 싶었 기 때문에 이것은 나에게 꽤 잘 작동했습니다. Btw, 다음은 OLEDB 및 ODBC에 대한 추가 코드 샘플이 있습니다. csvreader.com/csv_benchmarks.php
Meringros

5
이것은 64 비트에서 작동하지 않습니다.
DenNukem




3

CommonLibrary.NET의 일부인 CSV 파서를 사용하기 시작했습니다 .

그것은 .NET 3.5를 사용하고, 쉬운 API를 가지고 있으며, 반복을위한 편리한 오버로드 / 방법 및 람다를 가지고 있습니다.

위와 같은 벤치 마크는 없지만 이것에 대한 좋은 점은 Java Commons와 유사한 라이브러리의 한 구성 요소 일 뿐이라는 것입니다. 그래서 다른 것들 중에서도 명령 줄 파서, 저장소 구현을 얻습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.