我想在excel文件中保存一个html表,我使用fileSaver进行角度调整。但是当我下载文件并尝试打开它时,我收到一个来自excel的烦人的弹出窗口,说
“'report.xls'的文件格式和扩展名不匹配。文件可能已损坏或不安全。除非您信任其来源,否则请不要打开它。无论如何要打开它吗?”< / p>
$scope.exportExcel = function(){
var data, table;
table = document.getElementById('tableReport').innerHTML;
data = new Blob([table], {
type: 'application/vnd.ms-excel;charset=charset=utf-8'
});
return FileSaver.saveAs(data, 'report.xls');
};
如何修复此弹出式窗口?感谢。
答案 0 :(得分:0)
我有类似的问题。
我想我忘了在我的HTTP请求中将responseType
设置为blob
。
这似乎是正确读取二进制数据所必需的。
示例:
$http({
url: 'your/webservice',
method: "POST",
data: json, //this is your json data string
headers: {
'Content-type': 'application/json'
},
responseType: 'blob'
}).success(function (data, status, headers, config) {
var blob = new Blob([data], {type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"});
var objectUrl = URL.createObjectURL(blob);
window.open(objectUrl);
}).error(function (data, status, headers, config) {
//upload failed
});
代码来自this answer。