Erstellen Sie eine .csv-Datei in C#
Okay ich erstellen möchten .csv-Datei in C#. Ich habe schaut sich um und bemerkt, dass sich viele Leute das system verwenden.IO.memorystream und system.io.streamwriter.
Das problem ist Folgendes: ich habe eine web-Anwendung. Ich möchte dem Benutzer die Fähigkeit zum exportieren in excel. Problem ist, dass Excel nicht auf dem server installiert (nicht Fragen). Ich möchte in der Lage sein, zu schreiben .csv-sheet exportieren, die für einen Bericht. Nun, die Berichte Header und Daten wird anders sein für alle, die Berichte (die Schleife durch lösen dieser). Jemand ein Beispiel oder Ressourcen besser für mich, um durch zu gehen?
- Nach der Lektüre um. Alles, was ich wirklich tun müssen, ist die Schleife Durchlaufen, und die Ausgabe der Daten, die durch Kommas getrennt mit /n am Ende der Zeile und halten Sie die Schleife durch, bis getan...speichern Sie die Datei als .csv und schließen Sie dann den Strom...richtig?
- Sie müssen auch den content-type, und wenn ein datum enthalten könnte, eine
"
,,
oder newline-Zeichen, die Sie brauchen, um es zu entkommen zu. Code für, dass in meiner Antwort.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies der Ansatz, den ich normalerweise nehme. Wahrscheinlich nicht die effizienteste aber.
"
wäre entkommen.Kann es sinnvoll sein, auch das senden einer content-disposition-header mit einer empfohlenen Dateinamen.
Edit: zu spät, auch mit Fällen, in denen man braucht, um Zwischenraum für eine Aktion zwischen Elementen in einer Aufzählung (wie das Komma und Zeilenumbruch oben), habe ich bevorzugt, dass eher halten ein boolescher Wert, der hält gecheckt, ich mit dem enumerator direkt, und dann mit dem ersten element getrennt von dem rest. Ich begann, dies zu tun, wie ein micro-opt-in ist ein Effizienz-push, aber mittlerweile finde es einfach einen besseren Ausdruck eines code-Pfad, die sich für den ersten Punkt. Als solche, würde ich jetzt schreiben, der oben als:
Sollten Sie in der Lage sein zu verwenden die Beispiele, die
System.IO.MemoryStream
undSystem.IO.StreamWriter
gut.Statt zu schreiben den MemoryStream in eine Datei, würden Sie zurückgeben, da die ResponseStream in ASP.NET (sicherstellen, dass Sie die entsprechende header-Werte, so dass der browser weiß, dass es eine Datei herunterlädt).
Excel ist nur erforderlich, wenn Sie mithilfe von Office-Interop. Mit StringWriter, Sie sind einfach eine Datei zu erstellen, und fügen Sie einige Antwort-Informationen. Excel ist nur erforderlich, wenn Sie die Datei öffnen.
Es ist wirklich keine Magie in der Erstellung einer CSV-Datei. Das einzige problem mit CSV-Dateien ist, dass es nicht wirklich ein standard, und die meisten Importeure werden nur implementieren eines bestimmten Verhaltens für den import-Prozess. Wenn Sie Glück haben, bekommen Sie etwas, das erraten kann, relativ gut.
Generierung der CSV-Datei ist nur eine Frage des Drucks den Zeilen. Wie für die details, machen Sie sich vertraut mit:
http://en.wikipedia.org/wiki/Comma-separated_values
That being said, wenn was Sie wollen, ist der export in Excel, die Sie verwenden könnte Microsofts OOXML-SDK:
http://msdn.microsoft.com/en-us/library/bb448854.aspx
Den OOXML-SDK ist eine C# - Bibliothek, die du verwenden kannst, um Excel-Dateien auf dem server. Die Brian Jones blog ist eine großartige Ressource auf, wie man diese Bibliothek verwenden:
http://blogs.msdn.com/b/brian_jones/
Wenn es Ihnen nichts ausmacht mit einem 3rd-party-Bibliothek und die LGPL Lizenz ist okay in deinem Projekt, dann FileHelpers ist ein großes Werkzeug für diese.
Dies ist die Funktion zum erstellen der csv-Datei:
Ansonsten finden Sie unter dem link:
https://travelcodingnlotsmore.wordpress.com/2013/06/06/creating-csv-file-from-data-in-list-object-in-c/