Existe-t-il une méthode par défaut / officielle / recommandée pour analyser les fichiers CSV en C #? Je ne veux pas rouler mon propre analyseur.
En outre, j'ai vu des cas de personnes utilisant ODBC / OLE DB pour lire CSV via le pilote Text, et beaucoup de gens découragent cela en raison de ses «inconvénients». Quels sont ces inconvénients?
Idéalement, je cherche un moyen par lequel je peux lire le CSV par nom de colonne, en utilisant le premier enregistrement comme noms d'en-tête / champ. Certaines des réponses données sont correctes mais fonctionnent pour désérialiser fondamentalement le fichier en classes.
Un analyseur CSV fait désormais partie de .NET Framework.
Ajoutez une référence à Microsoft.VisualBasic.dll (fonctionne très bien en C #, ne vous occupez pas du nom)
Les documents sont ici - Classe TextFieldParser
PS Si vous avez besoin d'un exportateur CSV , essayez CsvExport (divulgation: je suis l'un des contributeurs)
la source
TextFieldParser.ReadLine()
. Voir les documents TextFieldParserCsvHelper (une bibliothèque que je gère) lira un fichier CSV dans des objets personnalisés.
Parfois, vous ne possédez pas les objets dans lesquels vous essayez de lire. Dans ce cas, vous pouvez utiliser un mappage fluide car vous ne pouvez pas attribuer d'attributs à la classe.
ÉDITER:
CsvReader nécessite désormais que CultureInfo soit passé dans le constucteur ( https://github.com/JoshClose/CsvHelper/issues/1441 ).
Exemple:
la source
Dans une application métier, j'utilise le projet Open Source sur codeproject.com , CSVReader .
Cela fonctionne bien et a de bonnes performances. Il y a une analyse comparative sur le lien que j'ai fourni.
Un exemple simple, copié depuis la page du projet:
Comme vous pouvez le voir, il est très facile de travailler avec.
la source
Je sais que c'est un peu tard mais je viens de trouver une bibliothèque
Microsoft.VisualBasic.FileIO
qui a laTextFieldParser
classe pour traiter les fichiers csv.la source
Si vous avez seulement besoin de lire des fichiers csv, je recommande cette bibliothèque: Un lecteur CSV rapide
Si vous devez également générer des fichiers csv, utilisez celui-ci: FileHelpers
Les deux sont gratuits et open source.
la source
Voici une classe d'aide que j'utilise souvent, au cas où quelqu'un reviendrait sur ce fil (je voulais le partager).
J'utilise ceci pour la simplicité de le porter dans des projets prêts à l'emploi:
Et utilisez-le comme:
[Aide csv mise à jour: bug corrigé où le dernier nouveau caractère de ligne créait une nouvelle ligne]
la source
Cette solution utilise l' assembly officiel Microsoft.VisualBasic pour analyser CSV.
Avantages:
Code:
la source
J'ai écrit TinyCsvParser pour .NET, qui est l'un des analyseurs .NET les plus rapides et hautement configurable pour analyser presque tous les formats CSV.
Il est publié sous licence MIT:
Vous pouvez utiliser NuGet pour l'installer. Exécutez la commande suivante dans la console du gestionnaire de packages .
Usage
Imaginez que nous ayons une liste de personnes dans un fichier CSV
persons.csv
avec leur prénom, nom et date de naissance.Le modèle de domaine correspondant dans notre système pourrait ressembler à ceci.
Lorsque vous utilisez TinyCsvParser, vous devez définir le mappage entre les colonnes dans les données CSV et la propriété dans votre modèle de domaine.
Et puis nous pouvons utiliser le mappage pour analyser les données CSV avec a
CsvParser
.Mode d'emploi
Un guide d'utilisation complet est disponible à l'adresse suivante:
la source
Voici mon implémentation KISS ...
la source
Il y a quelque temps, j'avais écrit une classe simple pour la lecture / écriture CSV basée sur la
Microsoft.VisualBasic
bibliothèque. En utilisant cette classe simple, vous pourrez travailler avec CSV comme avec un tableau à 2 dimensions. Vous pouvez trouver ma classe par le lien suivant: https://github.com/ukushu/DataExporterExemple simple d'utilisation:
Pour lire l'en-tête, il vous suffit de lire les
csv.Rows[0]
cellules :)la source
Solution de fichier source unique pour des besoins d'analyse simples, utile. Traite tous les cas de bord méchant. Telles que la normalisation de nouvelles lignes et la gestion de nouvelles lignes dans des littéraux de chaîne entre guillemets. Vous êtes le bienvenu!
Si votre fichier CSV a un en-tête, il vous suffit de lire les noms des colonnes (et de calculer les index des colonnes) à partir de la première ligne. Aussi simple que cela.
Notez qu'il
Dump
s'agit d'une méthode LINQPad, vous souhaiterez peut-être la supprimer si vous n'utilisez pas LINQPad.la source
Un autre de cette liste, Cinchoo ETL - une bibliothèque open source pour lire et écrire plusieurs formats de fichiers (CSV, fichier plat, Xml, JSON, etc.)
L'exemple ci-dessous montre comment lire rapidement un fichier CSV (aucun objet POCO requis)
L'exemple ci-dessous montre comment lire un fichier CSV à l'aide d'un objet POCO
Veuillez consulter les articles de CodeProject sur la façon de l'utiliser.
la source
Basé sur la publication d'unlimit sur Comment diviser correctement un CSV en utilisant la fonction C # split ()? :
REMARQUE: cela ne gère pas les virgules d'échappement / imbriquées, etc., et ne convient donc qu'à certaines listes CSV simples.
la source
Ce code lit csv à DataTable:
la source
Si quelqu'un veut un extrait, il peut plonger dans son code sans avoir à lier une bibliothèque ou télécharger un package. Voici une version que j'ai écrite:
la source
Voici une solution courte et simple.
la source