我的Java REST服务(POST调用)使用hssfWorkbook提供excel文件作为响应,并以xls格式返回excel。
response.getOutputStream();
hssfWorkbook.write(out);
我已经尝试过Filesaver,但它可以用作JSON作为响应。我没有找到任何方法在angular JS中实现excel文件下载。请建议使用angular JS的任何方法。
答案 0 :(得分:1)
试试这个它会起作用。
<强> API 强>
NEQ
$ http call
httpServletResponse.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
httpServletResponse.setHeader("Content-Disposition",
"attachment; filename=sample.xlsx");
workbook.write(httpServletResponse.getOutputStream());
workbook.close();
httpServletResponse.getOutputStream().close();
<强> HTML 强>
$scope.download = function() {
$http({
url: '/download',
method: "POST",
data: $scope.pagination,
headers: {
'Content-type': 'application/json'
},
responseType: 'arraybuffer'
}).success(function(data, status, headers, config) {
var blob = new Blob([data], {
type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
});
saveAs(blob, "Sales_Summary_Report.xls");
}).error(function(data, status, headers, config) {
});
}
答案 1 :(得分:0)
对于IE,你可以试试msSaveOrOpenBlob
对于其他浏览器暗示使用隐形锚链接应该解决它,像这样的代码对我有用:
$http( /*your request details */ ).
success(function(data) {
var blob = new Blob([data], { type: 'application/vnd.ms-excel' }),
fileName = 'Sales_Summary_Report.xls';
if (window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveOrOpenBlob(blob, fileName);
} else {
var anchor = angular.element('<a/>');
anchor.css({ display: 'none' });
angular.element(document.body).append(anchor);
anchor.attr({
href: (window.URL || window.webkitURL).createObjectURL(blob),
target: '_blank',
download: fileName
})[0].click();
anchor.remove();
}
})