Analysieren von CSV-Dateien in C # mit Header
Gibt es einen Standard/official/empfohlene Methode zum Parsen von CSV-Dateien in C#? Ich will nicht roll meine eigenen parser.
Außerdem habe ich gesehen, Instanzen von Menschen, die mit ODBC/OLE-DB zu Lesen CSV-über den Text-Treiber, und eine Menge Leute davon abgeraten, diese durch seine "Nachteile." Was sind das für Nachteile?
Ideal, ich bin auf der Suche nach einem Weg, durch die kann ich Lesen Sie die CSV-Spalte-name, mit dem ersten Datensatz, da die Kopf - /Feld-Namen. Einige der Antworten sind korrekt, aber die Arbeit, die im Grunde Deserialisieren Sie die Datei in den Klassen.
InformationsquelleAutor der Frage David Pfeffer | 2010-01-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lassen Sie eine Bibliothek mit allen nitty-gritty details für Sie! 🙂
Check-out FileHelpers und stay DRY - Don ' T Repeat Yourself - keine Notwendigkeit, das Rad neu erfinden, ein gazillionth Zeit....
Du im Grunde nur brauchen, um zu definieren, dass die Form der Daten - die Felder im einzelnen Zeile in der CSV - durch eine öffentliche Klasse (und so gut durchdacht Attribute wie Standardwerte, der als Ersatz für NULL-Werte und so weiter), zeigen die FileHelpers Motor in eine Datei, und bingo - Sie wieder alle Einträge aus dieser Datei. Eine einfache Bedienung - große Leistung!
InformationsquelleAutor der Antwort marc_s
Einen CSV-parser ist nun ein Teil .NET Framework.
Fügen Sie einen Verweis auf Microsoft.VisualBasic.dll (funktioniert in C#, nicht dagegen der name)
Die docs sind hier - TextFieldParser-Klasse
InformationsquelleAutor der Antwort Alex
CsvHelper (eine Bibliothek, die ich pflegen) liest eine CSV-Datei in benutzerdefinierten Objekten.
Manchmal, die Sie nicht besitzen die Objekte, die Sie versuchen zu Lesen. In diesem Fall können Sie fließend mapping, denn Sie können nicht nur die Attribute auf die Klasse an.
InformationsquelleAutor der Antwort Josh Close
In einer business-Anwendung, ich benutze die Open-Source-Projekt auf codeproject.com, CSVReader.
Es funktioniert gut, und hat gute Leistung. Es gibt einige benchmarking auf den link, den ich angegeben habe.
Einem einfachen Beispiel, kopiert von der Seite des Projektes:
Wie Sie sehen, es ist sehr einfach, mit zu arbeiten.
InformationsquelleAutor der Antwort alexn
Ich weiß, das ist ein bisschen spät, aber gerade fand eine Bibliothek
Microsoft.VisualBasic.FileIO
dieTextFieldParser
Klasse zum verarbeiten von csv-Dateien.InformationsquelleAutor der Antwort user1131926
Wenn Sie brauchen nur zu Lesen csv-Dateien, dann empfehle ich diese Bibliothek: Ein Schnelle CSV-Reader
Wenn Sie auch zur Erstellung von csv-Dateien dann verwenden Sie diesen: FileHelpers
Beide von Ihnen sind kostenlos und opensource.
InformationsquelleAutor der Antwort
Hier ist eine Hilfsklasse, die ich Häufig verwenden, im Fall man kommt immer zurück zu diesem thread (ich wollte, es zu teilen).
Ich benutze diese für die Einfachheit der Portierung in die Projekte bereit:
Und verwenden Sie es wie:
[Aktualisierte csv-Helfer: - bug behoben, wo die letzten neue-Zeile-Zeichen erstellt eine neue Zeile]
InformationsquelleAutor der Antwort Base33
Diese Lösung ist unter Verwendung der offiziellen Microsoft.VisualBasic assembly zu Parsen von CSV.
Vorteile:
Code:
InformationsquelleAutor der Antwort Jonas_Hess
Ich geschrieben habe TinyCsvParser.NET, welches eines der schnellsten ist .NET-Parser rund und hoch konfigurierbar zu analysieren fast jede CSV-format.
Es ist veröffentlicht unter der MIT-Lizenz:
Können Sie NuGetum es zu installieren. Führen Sie den folgenden Befehl in der Paket-Manager-Konsole.
Nutzung
Sich vorstellen, wir haben die Liste der Personen, die in einer CSV-Datei
persons.csv
mit Ihren Vorname, Nachname und Geburtsdatum.Den entsprechenden domain-Modell in unserem system könnte wie folgt Aussehen.
Bei der Verwendung TinyCsvParser Sie definieren die Zuordnung zwischen den Spalten in der CSV-Daten und die Eigenschaft, in der Sie Domänen-Modell.
Und dann können wir mit der Zuordnung zum Parsen der CSV-Daten mit einem
CsvParser
.Benutzerhandbuch
Eine vollständige Benutzerhandbuch ist verfügbar unter:
InformationsquelleAutor der Antwort bytefish
Gibt es keine offizielle Möglichkeit, die ich kenne, aber Sie sollten in der Tat die Verwendung bestehender Bibliotheken. Hier ist eine, die ich gefunden wirklich nützlich, aus CodeProject:
http://www.codeproject.com/KB/database/CsvReader.aspx
InformationsquelleAutor der Antwort VitalyB
Basierend auf unendlich Beitrag auf Wie Sie richtig aufteilen einer CSV mit C# split () - Funktion? :
HINWEIS: diese nicht handhaben entkommen /verschachtelte Kommata, etc., und deshalb eignet sich nur für bestimmte einfache CSV-Listen.
InformationsquelleAutor der Antwort radsdau
Hier ist mein KUSS Umsetzung...
InformationsquelleAutor der Antwort Alex Begun
Vor einiger Zeit hatte ich geschrieben einfach Klasse für CSV-Lesen/schreiben, basierend auf
Microsoft.VisualBasic
Bibliothek. Mit dieser einfachen Klasse, die Sie in der Lage zu arbeiten mit CSV-wie bei 2-dimensionale array. Sie finden meine Klasse durch den folgenden link: https://github.com/ukushu/DataExporterEinfaches Beispiel für die Verwendung:
Für das Lesen-header, nur Sie brauchen, ist zu Lesen
csv.Rows[0]
Zellen 🙂InformationsquelleAutor der Antwort Andrew
Dieser code liest csv DataTable:
InformationsquelleAutor der Antwort PolinaC
Andere zu dieser Liste, Cinchoo ETL - eine open source Bibliothek zum Lesen und schreiben von Dateien unterschiedlicher Formate (CSV, flat file, Xml, JSON etc)
Beispiel unten zeigt, wie zu Lesen CSV-Datei schnell (Keine POCO-Objekt erforderlich)
Beispiel unten zeigt, wie zu Lesen CSV-Datei mit POCO-Objekt
Bitte überprüfen Sie heraus die Artikel auf CodeProject auf, wie es zu benutzen.
InformationsquelleAutor der Antwort RajN
Single-source-Datei-Lösung für einfache parsing benötigt, nützlich. Befasst sich mit allen scheusslichen Fällen. Wie new line Normalisierung und Umgang mit neuen Linien im angegebenen string-Literale. Ihr willkommen!
Wenn Sie die CSV-Datei hat einen header, die Sie gerade Lesen Sie den Spaltennamen (und compute-Spalte Indizes) aus der ersten Zeile. So einfach ist das.
Beachten Sie, dass
Dump
ist ein LINQPad-Methode, möchten Sie vielleicht zu entfernen, wenn Sie nicht mit LINQPad.InformationsquelleAutor der Antwort John Leidegren