2017-09-11 2 views
0

Je suis en train d'apprendre Angular 2 et j'essaye de télécharger le fichier Excel en angulaire 2 en récupérant des données client à partir des tables du serveur sql en utilisant l'API Web.Comment télécharger le fichier Excel en angulaire 2

Après une recherche dans google je l'ai trouvé un peu de code, mais en utilisant ce code je suis en mesure de télécharger, mais il ne contient pas les données appropriées et le nom de fichier est également avoir un format de guid

Voici le code que je l'ai utilisé:

Component

 GetRemindersData() 
     { 
      var Flag="ALL_SPOTCHECK_RECORDS"; 
      this.httpService.GetRemindersData(Flag).subscribe(
      data=>this.downloadFile(JSON.stringify(data[1])), 
      error => console.log("Error downloading the file."), 
      () => console.info("OK")); 

     } 

     downloadFile(data:any){ 
      console.log(data); 
     var blob = new Blob([data], { type: 'application/vnd.ms-excel' }); 
      var url= window.URL.createObjectURL(blob); 
      window.open(url); 
      } 

Service.ts

   public GetRemindersData(Flag:string){ 

       var GetRemindersData_URL:string = 'http://localhost:5000/api/RemindersData/?Flag='+Flag; 


       return this.http.get(`${GetRemindersData_URL}`) 
          .map((res:Response) => res.json()) 
          .catch((error:any) => Observable.throw(error.json().error || 'Server error')); 
      }  
+0

Vous pouvez créer le fichier de fichier Excel sur l'avant à partir des données que vous afficher. Regardez la réponse [ici] (https://stackoverflow.com/a/44766181) pour voir comment c'est fait. – BogdanC

+0

Après avoir suivi la référence ci-dessus j'ai une erreur comme 'coudld pas trouver un fichier de déclaration pour le module' xlsx '. '/ node_modules /xlsx/xlsx.js' a implicitement un type 'any'. ' – user3301440

+1

J'ai une application de démonstration angulaire implémentant 'xlsx' [ici] (https://github.com/bogdancar/xlsx-json-to-xlsx-demo-Angular2). Clone-le et vois comment ça fonctionne. – BogdanC

Répondre

0

Retour Service JSON, il doit retourner le type de blob, vous pouvez le faire comme ça

return this.http.get(url,{responseType: ResponseContentType.Blob }).map(
    (res) => { 
     return new Blob([res.blob()], { type: 'application/vnd.ms-excel' }) 
    }) 

Regardez aussi ce post angular2 file downlaod

+0

Après avoir utilisé le code ci-dessus je viens d'obtenir une valeur de chaîne indéfinie fichier excel – user3301440

+0

pouvez-vous le backend respone – Robert

+0

réponse soutenue est un tableau d'objets json – user3301440