2016-04-29 80 views
0

我想将excel文件保存为html表格,我使用fileSaver作为角色。但是当我下载文件并尝试打开它时,我收到了一个令人讨厌的弹出窗口,它说'file.xls'的文件格式和扩展名与fileSaver.js不匹配

“文件格式和'report.xls'的扩展名不匹配,文件可能损坏或不安全。你相信它的来源,不要打开它,你想打开它吗?“

$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

该格式的正确扩展名是.htm不是.xls – Musa

+0

@musa:thx为您的答案,但我想在Excel中解压缩而不是html – radjiv

+0

它是html,并且excel预计该类型文件的.htm扩展名。指定扩展名不会将数据从一种格式转换为另一种格式 – Musa

回答

0

我有一个类似的问题。

我想我忘了在我的HTTP请求中设置responseTypeblob。 这似乎是正确读取二进制数据所必需的。

实施例:

$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

相关问题