90 votes

Analyseur/lecteur CSV pour C# ?

Existe-t-il une bonne et libre implémentation de l'analyseur CSV disponible sous une licence libérale ? Une contrepartie de SuperCSV pour Java, peut-être un port ?

70voto

Keltex Points 17151

53voto

Anton Gogolev Points 59794

Il y a une belle implémentation sur CodeProject :

Pour donner des chiffres plus concrets, avec un fichier CSV de 45 Mo contenant 145 champs et 50 000 enregistrements, le lecteur traitait environ 30 Mo/sec. Donc, en tout, cela a pris 1,5 seconde ! Les spécifications de la machine étaient les suivantes : P4 3.0 GHz, 1024 Mo.

10voto

Maxim Points 1903

Vous pouvez charger un fichier CSV dans DataTable.

Exemple de code -

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

Assurez-vous de compiler votre projet pour un processeur x86. Il ne fonctionne pas pour x64.

7voto

no_one Points 1403

Essayez fichiers d'aide Ils fonctionnent étonnamment bien. Je l'utilise pour analyser un fichier de 100 Mo tous les jours.

4voto

JaredPar Points 333733

Avez-vous essayé la bibliothèque FileHelpers ? Elle est gratuite, open source et peut être utilisée pour analyser les fichiers CSV.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X