Ich suche eine Klasse zum Erstellen von CSV-Excel-Dateien.
Erwartete Funktionen:
- Extrem einfach zu bedienen
- Entkommt Kommas und Anführungszeichen, damit Excel sie gut handhabt
- Exportiert Datum und Uhrzeit im zeitzonensicheren Format
Kennen Sie eine Klasse, die dazu in der Lage ist?
Antworten:
Etwas andere Version, die ich mit Reflection für meine Bedürfnisse geschrieben habe. Ich musste eine Liste von Objekten nach CSV exportieren. Für den Fall, dass jemand es für die Zukunft nutzen möchte.
Verwendungsbeispiel: (aktualisiert pro Kommentar)
quelle
public string Export()
Methode entfernen und die andere Methode inpublic string Export(bool includeHeaderLiner = true)
(mit einem Standardparameterwert) ändern ? Auch hier bin ich mir nicht sicher, ob 2011 Standardparameter verfügbar waren, aber der aktuelle Code erscheint mir nur unorthodox.Bitte verzeih mir
Aber ich denke, ein öffentliches Open-Source-Repository ist eine bessere Möglichkeit, Code zu teilen und Beiträge, Korrekturen und Ergänzungen wie "Ich habe das behoben, ich habe das behoben" zu machen.
Also habe ich aus dem Code des Themenstarters und allen Ergänzungen ein einfaches Git-Repository erstellt:
https://github.com/jitbit/CsvExport
Ich habe auch selbst einige nützliche Korrekturen hinzugefügt. Jeder kann Vorschläge hinzufügen, sie aufteilen usw. usw. Senden Sie mir Ihre Gabeln, damit ich sie wieder in das Repo einbinde.
PS. Ich habe alle Copyright-Hinweise für Chris veröffentlicht. @ Chris, wenn Sie gegen diese Idee sind - lassen Sie es mich wissen, ich werde es töten.
quelle
Eine weitere gute Lösung zum Lesen und Schreiben von CSV-Dateien sind Dateihelfer (Open Source).
quelle
Wie wäre es mit string.Join anstelle aller foreach-Schleifen?
quelle
String.Join("," , List<string>)
funktioniert auch.Wenn jemand möchte, habe ich dies in eine Erweiterungsmethode auf IEnumerable konvertiert:
quelle
großartige Arbeit an dieser Klasse. Einfach und leicht zu bedienen. Ich habe die Klasse so geändert, dass sie einen Titel in die erste Zeile des Exports einfügt. Ich dachte, ich würde teilen:
verwenden:
Klasse:
quelle
Es gibt eine Open-Source-Bibliothek für CSV, die Sie mit nuget erhalten können: http://joshclose.github.io/CsvHelper/
quelle
Ich habe ExportToStream hinzugefügt, damit die CSV nicht zuerst auf der Festplatte gespeichert werden musste.
quelle
Ich habe hinzugefügt
Vorheriger Code funktioniert nicht mit alten .NET-Versionen. Verwenden Sie für die Version 3.5 des Frameworks diese andere Version:
quelle
Vielen Dank dafür! Ich habe die Klasse geändert zu:
MakeValueCsvFriendly
Code:
quelle
Sie können dazu auch ADO verwenden: http://weblogs.asp.net/fmarguerie/archive/2003/10/01/29964.aspx
quelle
Die ursprüngliche Klasse hat ein Problem. Wenn Sie also eine neue Spalte hinzufügen möchten, erhalten Sie die KeyNotFoundException on Export-Methode. Beispielsweise:
Um dies zu lösen und die @ KeyboardCowboy-Idee der Verwendung von Reflection zu verwenden, habe ich den Code so geändert, dass Zeilen hinzugefügt werden können, die nicht dieselben Spalten haben. Sie können Instanzen anonymer Klassen verwenden. Beispielsweise:
Sie können den Quellcode hier herunterladen . CsvExporter . Fühlen Sie sich frei zu verwenden und zu ändern.
Wenn nun alle Zeilen, die Sie schreiben möchten, derselben Klasse angehören, habe ich die generische Klasse CsvWriter.cs erstellt , die eine bessere RAM-Auslastung aufweist und sich ideal zum Schreiben großer Dateien eignet. Außerdem können Sie dem gewünschten Datentyp Formatierer hinzufügen . Ein Anwendungsbeispiel:
quelle
Sie benötigen dazu nur eine Funktion. Sie müssen lediglich einen Ordner in Ihrem Lösungs-Explorer erstellen, die CSV-Datei dort speichern und diese Datei dann an den Benutzer exportieren.
Wie in meinem Fall habe ich einen Ordner heruntergeladen. Zuerst exportiere ich meinen gesamten Inhalt in dieses Verzeichnis und exportiere ihn dann in den Benutzer. Für die Behandlung von response.end habe ich die ThreadAbortException verwendet. Es ist also eine 100% echte und funktionierende Funktion in meiner Lösung.
quelle