2016-11-10 14 views
0

私は開発中です。アプリケーションは、バックエンドにnode.js、フロントエンドにAngular.jsを持っています。私はノードでexceljsモジュールを使ってxlsxブックを作成しています。 UIはxlsxファイルをダウンロードするためにajax呼び出しを行います。Excelがwindow.saveAs()を使用してダウンロードされていません。

Node.jsコード。

response.setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); 
response.setHeader("Content-Disposition", "attachment; filename=" + quoteId +".xlsx"); 

workbook.xlsx.write(response).then(function() { 
    response.end(); 
}); 

角度コード

DownloadService.downloadServiceCall(inputParam).then(
    function success(res){ 
     var blob = new Blob([res.data], { type: res.headers()['content-type'] }); 
     var header = res.headers()['content-disposition']; 
     var fileName = header.match(/filename=(.+)/)[1]; 
     window.saveAs(blob,fileName); 
    }); 

私はcsvファイルをダウンロードし、上記のコードでそれを開くことができますよ。

Excelファイルがダウンロードされていますが、同じファイルを開くことができません。それは

Error while opening excel downloaded

誰もがこの問題についての考えを持って、次のエラーをスローし、解決策を提案してください。これについての助けに感謝します。

ありがとう

答えて

0

これはAngularからの非同期呼び出しによるものです。 saveAsとは関係ありません。要求オブジェクトにresponseType: 'arraybuffer'を追加しました。それが問題を解決しました。

$http({method:'get',url:'',responseType:'arraybuffer'}) 
関連する問題