Download Excel-Datei vom server und speichern auf dem client

Habe ich eine JavaScript-app und einer API, die erstellt eine Excel-Datei und gibt ein byte-array mit dem folgenden Header:

Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Content-Disposition:attachment; filename=List.xlsx

Wenn ich die Excel-API-URL-Ressource bin ich aufgefordert, den download der Excel-Datei. Wenn ich also lädt es fein und in Excel geöffnet. Alles ist gut.

Nun zum problem:

Was ich nicht will ist, setzen Sie die API URL in dem browser-Fenster, so dass mein Ziel ist:

  • Download der Excel-Datei via AJAX XMLHttpRequest
  • Speichern den Inhalt (byte-array) in einen Blob -
  • Erstellen Sie eine data-URI mit dem Blob -
  • Öffnen Sie die data-URI in einem popup-Fenster, das den Benutzer auffordert, zum download der Excel-Datei

Was ich habe ist dieses:

Es die Datei lädt, aber wenn ich versuche die Datei zu öffnen, kann Excel nicht erkennen, es als eine gültige Excel-Datei.

//"data" is the contents from the server

var reader = new FileReader();
var blob = new Blob([data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
reader.readAsDataURL(blob);

reader.onloadend = function (e) {
    window.open(reader.result, 'Excel', 'width=20,height=10,toolbar=0,menubar=0,scrollbars=no', '_blank');
}
  • Kommt diese müssen im IE funktioniert?
  • Ich habe es gelöst (siehe Antwort unten), aber du hast Recht, der IE dies nicht unterstützt. Kann es sein zur Verfügung gestellt für den IE?
InformationsquelleAutor Gaui | 2015-04-24
Schreibe einen Kommentar