'file.xls'的文件格式和扩展名与fileSaver.js不匹配

时间:2016-04-29 04:32:41

标签: javascript angularjs excel blob filesaver.js

我想在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');
};

如何修复此弹出式窗口?感谢。

1 个答案:

答案 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