Trình phân tích cú pháp / trình đọc CSV cho C #? [đóng cửa]


89

có triển khai tốt và miễn phí trình phân tích cú pháp CSV theo một số giấy phép tự do không? Một số đối tác của SuperCSV dành cho Java, có lẽ là một cổng?



5
sử dụng Microsoft.VisualBasic.FileIO.TextFieldParser;


1
Không mang tính xây dựng? Quản trị viên thật là điên rồ. Đây là một câu hỏi RẤT hữu ích.
richard

Câu trả lời:


70

24
FileHelpers (ít nhất là cho CSV) yêu cầu bạn "xác định một lớp ánh xạ tới bản ghi trong nguồn (tệp)", "bạn phải khai báo một Lớp ánh xạ Bản ghi", v.v. và điều này không quá nóng. Tôi muốn chuyển đổi CSV thành DataTable, không biết trước có bao nhiêu cột.
Konrad Morawski

53

Có một triển khai tuyệt vời trên CodeProject :

Để cung cấp thêm cho các con số trái đất, với tệp CSV 45 MB chứa 145 trường và 50.000 bản ghi, trình đọc đang xử lý khoảng 30 MB / giây. Vì vậy, tất cả, nó mất 1,5 giây! Thông số của máy là P4 3.0 GHz, 1024 MB.


(lấy lại +1 của tôi): Tôi vừa phá vỡ trình đọc Lumenworks Fast CSV trên tệp 53Mb. Có vẻ như bộ đệm dòng không thành công sau 43.000 hàng và xáo trộn bộ đệm. Đã thử Microsoft.VisualBasic.FileIO.TextFieldParsevà nó đã thành công.
Gone Coding

11

Bạn có thể tải tệp CSV vào DataTable.

Mã mẫu -

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;
}

Đảm bảo rằng bạn biên dịch dự án của mình sang bộ xử lý x86. Nó không hoạt động cho x64.


1
điều này hoạt động khá tốt đối với tôi vì tôi muốn ở lại với các thư viện ODBC hoặc OLEDB tích hợp sẵn. Btw, phần sau có các mẫu mã bổ sung cho cả OLEDB và ODBC: csvreader.com/csv_benchmarks.php
Meringros

5
Điều này không hoạt động trên 64 bit, than ôi.
DenNukem




3

Tôi đã bắt đầu sử dụng Trình phân tích cú pháp CSV là một phần của CommonLibrary.NET .

Nó sử dụng .NET 3.5, có một API dễ dàng và quá tải / phương thức & lamda thuận tiện cho các lần lặp lại.

Tôi không có bất kỳ điểm chuẩn nào cho cái này như ở trên, nhưng điều thú vị là nó chỉ là một thành phần của thư viện tương tự như Java Commons. Vì vậy, tôi cũng nhận được một trình phân tích cú pháp dòng lệnh, triển khai Kho lưu trữ trong số những thứ khác.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.