使用window.saveAs()下载的Excel无法打开

时间:2016-11-10 07:42:45

标签: javascript angularjs node.js excel

我的开发和应用程序在后端有node.js,在前端有Angular.js。我在节点中使用exceljs模块来创建xlsx书。 UI正在进行ajax调用以下载xlsx文件。

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

任何人都对此问题有所了解,请提出解决方案。任何有关这方面的帮助将不胜感激。

谢谢..

1 个答案:

答案 0 :(得分:0)

这是由于来自Angular的异步调用。与saveAs无关。在请求对象中添加了responseType:'arraybuffer'。它解决了这个问题。

$http({method:'get',url:'',responseType:'arraybuffer'})