Télécharger le fichier Excel de serveur et de les enregistrer sur le client

J'ai une application JavaScript et une API qui crée un fichier Excel et renvoie un tableau d'octets avec les en-têtes suivants:

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

Quand je vais le Excel des ressources de l'API URL-je suis invité à télécharger le fichier Excel. Si je le fais, il télécharge fine et s'ouvre dans Excel. Tout est bon.

Maintenant au problème:

Ce que je ne veux pas, c'est d'exposer l'API URL dans le navigateur de l'utilisateur de la fenêtre, donc mon but est de:

  • Télécharger le fichier Excel via AJAX XMLHttpRequest
  • Stocker le contenu (tableau d'octets) dans un Blob
  • Créer une base de données URI avec le Blob
  • Ouvrir les données URI dans une popup, qui invite l'utilisateur à télécharger le fichier Excel

Ce que j'ai est: est-ce

, Il télécharge le fichier, mais lorsque j'essaie d'ouvrir le fichier Excel n'est pas le reconnaître comme valide d'un fichier Excel.

//"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');
}
Cette nécessité de travailler dans IE?
Je l'ai résolu (voir la réponse ci-dessous), mais vous avez raison, c'est à dire ne prend pas en charge cette. Peut-il être mis à disposition pour IE?

OriginalL'auteur Gaui | 2015-04-24