CSV parser / reader สำหรับ C #? [ปิด]


89

มีการใช้โปรแกรมแยกวิเคราะห์ CSV ที่ดีและฟรีภายใต้ใบอนุญาตแบบเสรีหรือไม่ บางคู่ของSuperCSVสำหรับ Java บางทีพอร์ต?



5
ใช้ Microsoft.VisualBasic.FileIO.TextFieldParser;


1
ไม่สร้างสรรค์? ดังนั้นผู้ดูแลระบบจึงคลั่งไคล้ นี่เป็นคำถามที่มีประโยชน์มาก
richard

คำตอบ:


70

FileHelpers เปิดห้องสมุดแหล่งที่มา


24
FileHelpers (สำหรับ CSV เป็นอย่างน้อย) กำหนดให้คุณต้อง "กำหนดคลาสที่แมปกับเรกคอร์ดในซอร์ส (ไฟล์)" "คุณต้องประกาศคลาสการแมประเบียน" เป็นต้นซึ่งจะไม่ร้อนแรง ฉันต้องการแปลง CSV เป็น DataTable โดยไม่ทราบล่วงหน้าว่าจะมีกี่คอลัมน์
Konrad Morawski

53

CodeProjectมีการใช้งานที่ดี:

ในการให้รายละเอียดเพิ่มเติมเกี่ยวกับตัวเลขโลกด้วยไฟล์ CSV ขนาด 45 MB ที่มี 145 ช่องและ 50,000 ระเบียนผู้อ่านกำลังประมวลผลประมาณ 30 MB / วินาที สรุปแล้วใช้เวลา 1.5 วินาที! สเปกเครื่องคือ P4 3.0 GHz, 1024 MB


(เอา +1 ของฉันกลับคืนมา): ฉันเพิ่งทำลายโปรแกรมอ่าน Lumenworks Fast CSV ในไฟล์ 53Mb ดูเหมือนว่าการแคชบรรทัดล้มเหลวหลังจาก 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

ผมได้เริ่มต้นใช้ CSV Parser ว่าเป็นส่วนหนึ่งของCommonLibrary.NET

มันใช้. NET 3.5 มี API ที่ง่ายและโอเวอร์โหลด / วิธีการที่สะดวกและ lamda สำหรับการทำซ้ำ

ฉันไม่มีเกณฑ์มาตรฐานสำหรับสิ่งนี้เหมือนข้างต้น แต่สิ่งที่ดีเกี่ยวกับสิ่งนี้คือมันเป็นเพียงส่วนประกอบหนึ่งของไลบรารีที่คล้ายกับ Java Commons ดังนั้นฉันจึงได้รับตัวแยกวิเคราะห์บรรทัดคำสั่งการใช้งานพื้นที่เก็บข้อมูลเหนือสิ่งอื่นใด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.