Casablanca: Create Excel und Download

Hallo Forum,

wie kann man "on the fly" eine Excel-Datei in C# kreieren und sofort als downlod anbieten? Das heißt:

1. Einen Link anklicken "Create CSV". (Da wird eine Methode aufgerufen)
2. in dieser Methode --> Create CSV.
3. Öffnen das Download-Fenster, um die CSV-Datei zu downloaden.

Die CSV-Datei soll also nirgends auf der Festplatte gespeichert werden, sondern soll die Datei sofort als Stream downloadbar sein.

Danke im Voraus

  1. Hallo

    wie kann man "on the fly" eine Excel-Datei in C# kreieren und sofort als downlod anbieten? Das heißt:

    1. Einen Link anklicken "Create CSV". (Da wird eine Methode aufgerufen)
    2. in dieser Methode --> Create CSV.
    3. Öffnen das Download-Fenster, um die CSV-Datei zu downloaden.

    Soll das im Browser ablaufen?

    Die CSV-Datei soll also nirgends auf der Festplatte gespeichert werden, sondern soll die Datei sofort als Stream downloadbar sein.

    Wenn die Antwort auf meine erste Frage „ja“ lautet, dann sende die erzeugte CSV an den Browser und gib im zugehörigen HTTP-Header den für CSV passenden MIME-Header an.

    Tschö, Auge

    --
    Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
    Terry Pratchett, "Wachen! Wachen!"
    ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
    Veranstaltungsdatenbank Vdb 0.3
    1. Hi,

      danke. Ja das ist eine MVC-Anwendung und läuft im Browser. Eigenlich habe auf ein Beispiel gehofft. Ich habe viele Beispiele im Internet gefunden, die nicht das gemacht haben, die ich suche.

      Gruß

      1. Hallo

        Eigenlich habe auf ein Beispiel gehofft. Ich habe viele Beispiele im Internet gefunden, die nicht das gemacht haben, die ich suche.

        Nunja, mit fertigen Beispielen haben wir es hier nicht so. Zudem ist C# im Webbereich nicht unbedingt eine gängige Sprache, wobei ich nicht ausschließe, dass es hier auch C#-Cracks geben mag (ich bin es nicht). Ich kann C#-Code einigermaßen verstehend lesen, das war's dann aber auch.

        An welcher Stelle hakt es denn und was hast du bisher erreicht?

        Tschö, Auge

        --
        Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
        Terry Pratchett, "Wachen! Wachen!"
        ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
        Veranstaltungsdatenbank Vdb 0.3
  2. Tach!

    wie kann man "on the fly" eine Excel-Datei in C# kreieren und sofort als downlod anbieten?

    Zum Excel-Erzeugen gibt es auf alle Fälle Bibliotheken. Anleitungen dazu sind einfach zu finden. Ohne Datei kommt man aus, wenn man in einen Stream (MemoryStream zum Beispiel) anstatt einer Datei speichert und dann den Stream-Inhalt ausgibt.

    dedlfix.

  3. Hallo,

    wie kann man "on the fly" eine Excel-Datei in C# kreieren und sofort als downlod anbieten?

    indem man die Ausgabe sofort an den Client sendet, anstatt sie in eine Datei zu speichern. In PHP wäre das trivial; C# kenne ich nicht, kann also nicht speziell darauf eingehen.

    1. Einen Link anklicken "Create CSV". (Da wird eine Methode aufgerufen)

    Nein. Da wird ein ein HTTP-Request gesendet und damit in der Regel ein ganzes Script aufgerufen. Und aus der Excel-Datei ist jetzt nur noch eine gewöhnliche CSV-Datei geworden? Das macht zumindest das Erzeugen der Daten wesentlich einfacher.

    1. in dieser Methode --> Create CSV.

    Im Prinzip ja. Erzeuge die CSV-Daten Zeile für Zeile und sende sie als HTTP-Response an den Client. Nicht vergessen, vorher den passenden Content-Type-Header "text/csv" zu senden, wie auch Auge schon erwähnte.

    1. Öffnen das Download-Fenster, um die CSV-Datei zu downloaden.

    Das macht der Client von allein, wenn er nicht so konfiguriert ist, CSV-Dokumente sofort an die passende Anwendung zu übergeben. Damit hast du jedenfalls von der Serverseite aus nichts am Hut.

    Ciao,
     Martin

    --
    Chef zum Bewerber: Es gibt zwei Dinge, auf die ich allergrößten Wert lege. Das eine ist Sauberkeit! Haben Sie übrigens die Schuhe auf der Matte abgetreten? - Ja, selbstverständlich. - Gut. Das andere ist uneingeschränkte Ehrlichkeit. Übrigens, draußen liegt gar keine Fußmatte.
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(