如何使用AngularJS将数据导出到Excel?

时间:2016-04-19 17:12:31

标签: angularjs blob filesaver.js

服务器响应数据如下: code screenshot

我的角度代码:

$scope.export = function() {
    var datas = new Blob([data], { type: 'application/vnd.ms-excel;charset=UTF-8' });
    FileSaver.saveAs(datas, '2016-04-20.xlsx');
}

和标题:

Accept-Range:bytes
Connection:keep-alive
Content-Disposition:attachment; filename=%E8%A1%A5%E8%B4%B4%E8%B5%84%E6%A0%BC%E5%B7%B2%E5%AE%A1%E6%A0%B8%E4%BF%A1%E6%81%AF%E8%A1%A8.xlsx
Date:Tue, 19 Apr 2016 17:23:06 GMT
Transfer-Encoding:chunked
X-Powered-By:Express

依赖关系 角, FileSaver.js, Blob.js

但我得到了错误的文件,无法打开,我该如何解决这个问题?谢谢!

1 个答案:

答案 0 :(得分:1)

我有类似的问题。我能够从第三个工具(例如Postman)获得有效文件,但不能从我自己的代码中获取。

我想我忘了在我的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