Ich muss eine CSV-Datei in HTTP-Antwort senden. Wie kann ich die Ausgabeantwort als CSV-Format festlegen?
Das funktioniert nicht:
Response.ContentType = "application/CSV";
Verwenden text/csv
ist der am besten geeignete Typ.
Sie sollten auch in Betracht ziehen Content-Disposition
, der Antwort einen Header hinzuzufügen . Oft wird ein Text / CSV von einem Internet Explorer direkt in eine gehostete Instanz von Excel geladen. Dies kann ein wünschenswertes Ergebnis sein oder nicht.
Response.AddHeader("Content-Disposition", "attachment;filename=myfilename.csv");
Das oben Gesagte führt dazu, dass ein Dialogfeld "Speichern unter" angezeigt wird, das möglicherweise Ihren Absichten entspricht.
Der MIME-Typ der CSV ist Text / CSV gemäß RFC 4180 .
quelle
Verwendung
text/csv
als Inhaltstyp.quelle
Im Laufe der Jahre habe ich einen perfekten Satz von Headern dafür entwickelt, die in allen mir bekannten Browsern hervorragend funktionieren
quelle
Probieren Sie einen dieser anderen MIME-Typen aus (von hier aus: http://filext.com/file-extension/CSV )
Der MIME-Typ kann auch zwischen Groß- und Kleinschreibung unterscheiden ...
quelle
text/csv
arbeitete für michVerwenden Sie einfach so
quelle
return new EmptyResult()
, damit der Dateiname erhalten bleibt. Andernfalls versucht der IE, die Datei als zu speichernActionName.htm
.In ASP.net MVC können Sie a
FileContentResult
und die folgendeFile
Methode verwenden:quelle
Ich habe festgestellt, dass das Problem mit dem Internet Explorer darin besteht, dass er die Rückgabedaten abruft und sich selbst ein Bild davon macht, welcher Inhaltstyp seiner Meinung nach gesendet wurde. Dies hat eine Reihe von Nebenwirkungen zur Folge, z. B. das Öffnen eines saveAs-Dialogfelds für Textdateien, da Sie die Komprimierung von Datenübertragungen verwenden. Die Lösung ist (im PHP-Code) ......
quelle
Wenn Sie den Inhaltstyp und die Inhaltsdisposition wie oben beschrieben einstellen, werden mit verschiedenen Browsern sehr unterschiedliche Ergebnisse erzielt:
IE8: Dialogfeld "Speichern unter" wie gewünscht und Excel als Standard-App. 100% gut.
Firefox: Das Dialogfeld "Speichern unter" wird angezeigt, aber Firefox hat keine Ahnung, dass es sich um eine Tabelle handelt. Schlägt vor, es mit Visual Studio zu öffnen! 50% gut
Chrome: Die Hinweise werden vollständig ignoriert. Die CSV-Daten werden im Browser angezeigt. 0% gut.
Natürlich beziehe ich mich in all diesen Fällen auf die Browser, wenn sie aus der Verpackung kommen, ohne dass die MIMM- / Anwendungszuordnungen angepasst werden müssen.
quelle
Ich schlage vor, ein '/' vor 'myfilename.cvs' einzufügen.
Ich hoffe, Sie erzielen bessere Ergebnisse.
quelle
Für C # MVC 4.5 müssen Sie Folgendes tun:
quelle