Heim > Backend-Entwicklung > C++ > Wie kann ich Excel -Dateien mit AJAX in MVC ohne Seiten -Reloads herunterladen?

Wie kann ich Excel -Dateien mit AJAX in MVC ohne Seiten -Reloads herunterladen?

Mary-Kate Olsen
Freigeben: 2025-01-29 00:18:09
Original
276 Leute haben es durchsucht

How Can I Download Excel Files Remotely Using AJAX in MVC Without Page Reloads?

Remote Excel -Datei in MVC mit AJAX herunterladen: Ein nahtloser Ansatz

Umfangreiche Formulare in MVC müssen häufig Excel -Dateien aus bestimmten Formulardaten generieren. Dieser Artikel zeigt, wie dies mit AJAX effizient erreicht werden kann, wodurch vollständige Aktualisierungen von Seiten vermieden werden.

Die AJAX -Datei -Download -Herausforderung

direktes Herunterladen von Dateien über Ajax ist nicht machbar. Wir brauchen eine Problemumgehung.

Die Lösung: Server-Seite-Dateigenerierung und AJAX-Datenübertragung

Die Lösung umfasst die Verwendung von AJAX zum Senden von Formulardaten an den Server. Der serverseitige Code (z. B. mit Epplus oder NPOI) erstellt die Excel-Datei. Die Datei wird dann als Byte -Array vorübergehend gespeichert und eine Referenz an den Client zurückgegeben. Eine nachfolgende Weiterleitung löst den tatsächlichen Download aus.

Byte -Array -Speicher und Referenzabgabe

Die generierte Excel -Datei wird als Byte -Array im Tempdata -Container gespeichert, das durch eine eindeutige Referenz identifiziert wird. Diese Referenz (zusammen mit dem Dateinamen) wird als JSON an die AJAX -Funktion zurückgesandt. Die AJAX -Funktion leitet dann zu einer separaten Controller -Aktion um, um die Datei von tempdata abzurufen und den Download zu initiieren.

Schritt-für-Schritt-Implementierung

1. Controller -Aktion für die Dateigenerierung:

Diese Aktion empfängt die Formulardaten, generiert die Excel -Datei mit einer Bibliothek wie Epplus, speichert sie in Tempdata als Byte -Array und gibt ein JSON -Objekt mit einer eindeutigen Kennung und dem Dateinamen zurück.

.
<code class="language-csharp">public ActionResult PostReportPartial(ReportVM model)
{
    // Generate Excel file using EPPlus or NPOI
    ExcelPackage workbook = new ExcelPackage();
    // ... file generation logic ...

    // Store file in TempData
    string handle = Guid.NewGuid().ToString();
    TempData[handle] = workbook.GetAsByteArray();

    return Json(new { FileGuid = handle, Filename = "ReportOutput.xlsx" });
}</code>
Nach dem Login kopieren

2. Ajax Call und Umleitung:

PostReportPartial Der AJAX -Aufruf sendet die Formulardaten an die

-Kaktion. Bei erfolgreicher Antwort leitet es zu einer anderen Controller -Aktion um, um den Download zu verarbeiten.
<code class="language-javascript">$.ajax({
    // ... AJAX settings ...
    success: function (response) {
        window.location = '/Report/Download?fileGuid=' + response.FileGuid + '&filename=' + response.Filename;
    }
});</code>
Nach dem Login kopieren

3. Controller -Aktion für Datei herunterladen:

Diese Aktion ruft die Datei von Tempdata mit der eindeutigen Bezeichnung ab und sendet sie zum Download an den Client.
<code class="language-csharp">[HttpGet]
public ActionResult Download(string fileGuid, string fileName)
{
    if (TempData[fileGuid] != null)
    {
        byte[] data = TempData[fileGuid] as byte[];
        return File(data, "application/vnd.ms-excel", fileName);
    }
    else
    {
        return new EmptyResult();
    }
}</code>
Nach dem Login kopieren

Diese Methode sorgt für effiziente, benutzerfreundliche Excel-Datei-Downloads ohne Seiten-Reloads und nutzt die serverseitige Verarbeitung für eine optimale Leistung. Auf dem Server werden keine physischen Dateien dauerhaft gespeichert.

Das obige ist der detaillierte Inhalt vonWie kann ich Excel -Dateien mit AJAX in MVC ohne Seiten -Reloads herunterladen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage