2016-10-13 6 views
0

ファイルコンテンツをバイナリまたはバイト配列(REST APIから)として取得していて、これをExcelファイルに変換してダウンロードしたいAngle.jsを使用してクライアント側では、それを行う方法がわかりません。誰でもここで私を助けることができますか?残りのapiのバイナリコードをangular.jsのExcelファイルに変換する方法

また、ここにコードを添付すると、.xlsファイルがダウンロードされていますが、開いた後もファイルの内容は実際のファイルの内容ではなく、apiの応答から得られるバイナリ/バイトの内容と同じです。誰でも私がここで何が欠けているかを伝えることができますまたは私はどのように変換することができます/実際の形式に応答を読む。私が完全に立ち往生しているので、どんな助けも大歓迎です。誰もが同じ問題に直面した場合

$http.get(__env.apiUrl+"/UserSurvey/GetTrackingReport?surveyId="+$rootScope.surveysummaryID,{headers:{"Content-type":"application/json",'sessionID':$rootScope.token}}).then(function(response){ 
      console.log(response); 
      var blob = new Blob([response.data], {type: 'application/vnd.ms-excel'}); 
       if (window.navigator && window.navigator.msSaveBlob) { 
        window.navigator.msSaveBlob(blob); 
       } 
       else { 
        var objectUrl = URL.createObjectURL(blob); 
        window.open(objectUrl); 
       } 

     },function(error){ 
      console.log(error); 
     }); 

多くのおかげで、

答えて

0

、私はunsignedInt型値の変換を逃したとBLOBオブジェクトに同じ渡し、それが動作していました!

$http.get(__env.apiUrl+"/UserSurvey/GetTrackingReport?surveyId="+$rootScope.surveysummaryID,{headers:{"Content-type":"application/json",'sessionID':$rootScope.token,'Accept': "application/vnd.ms-excel"}}, {responseType: 'arraybuffer'}).then(function(response){ 
       var dec = window.atob(response.data); 
       var myArr = new Uint8Array(dec.length) 
       for(var i = 0; i < Object.keys(dec).length; i++){ 
        myArr[i] = dec.charCodeAt(i); 
       } 
       var blob = new Blob([myArr], {type: 'application/vnd.ms-excel'}); 
       if (window.navigator && window.navigator.msSaveBlob) { 
        window.navigator.msSaveBlob(blob); 
       } 
       else { 
        var objectUrl = URL.createObjectURL(blob); 
        window.open(objectUrl); 
       } 
     },function(error){ 
      console.log(error); 
     }); 

これは誰かを助けることを望みます!

関連する問題