我的开发和应用程序在后端有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文件已下载但我无法打开相同的文件。它抛出以下错误
任何人都对此问题有所了解,请提出解决方案。任何有关这方面的帮助将不胜感激。
谢谢..
答案 0 :(得分:0)
这是由于来自Angular的异步调用。与saveAs无关。在请求对象中添加了responseType:'arraybuffer'。它解决了这个问题。
$http({method:'get',url:'',responseType:'arraybuffer'})