web-dev-qa-db-fra.com

Analyseur / lecteur CSV pour C #?

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

89
70
Keltex

Il y a une implémentation de Nice sur CodeProject :

Pour donner plus de chiffres terre à terre, avec un fichier CSV de 45 Mo contenant 145 champs et 50 000 enregistrements, le lecteur traitait environ 30 Mo/sec. Donc, dans l'ensemble, cela a pris 1,5 seconde! Les spécifications de la machine étaient P4 3,0 GHz, 1024 Mo.

53
Anton Gogolev

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 sur un processeur x86. Cela ne fonctionne pas pour x64.

10
Maxim

essayez filehelpers Fonctionne incroyablement bien. Je l'utilise pour analyser un fichier de 100 Mo tous les jours.

7
no_one

Avez-vous essayé la bibliothèque FileHelpers? C'est gratuit, open source et peut être utilisé pour analyser des fichiers CSV.

4
JaredPar

J'ai commencé à utiliser CSV Parser qui fait partie de CommonLibrary.NET .

Il utilise .NET 3.5, dispose d'une API simple et de surcharges/méthodes et lamda pratiques pour les itérations.

Je n'ai pas de référence pour celui-ci comme ci-dessus, mais ce qui est bien c'est que ce n'est qu'un composant d'une bibliothèque similaire à Java Commons. Donc, je reçois également un analyseur de ligne de commande , Implémentation du référentiel entre autres.

3
zhao