从Rest API响应内容 - 配置输出[对象,对象]下载javascript中的excel文件

时间:2015-04-20 05:25:24

标签: javascript angularjs excel download content-disposition

我想从angularJs代码下载excel文件。我向Java Rest API发出http post请求并返回带有标头的文件 “Content-Disposition”:“attachment; filename = \”new_excel_file.xlsx \“”

Java代码

@Post 
@Path("/excel/trekResult")
@Produces("application/vnd.ms-excel")
public Response getResultsReport(@HeaderParam(Constants.ID) Long userId, @QueryParam(Constants.COMPANY_TREK_ID) Integer companyTrekId) {
String CONTENT_DESPOSITION = "Content-Disposition";
String CONTENT_ATTACHEMENT = "attachment; filename=\"new_excel_file.xlsx\"";

//Generates a excel file in local file system
File excelFile = misHelper.writeToFile(workBook, mis, userId, "trek-results");

return Response.ok().entity((Object)excelFile).
    header(CONTENT_DESPOSITION, CONTENT_ATTACHEMENT).build();

}

在Javascript方面

myService.exportResult($scope.companyTrek.id).then(function(result) {
  if(result !== undefined || result !== '') {
    var blob = new Blob([result], {
      type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
    });
    var objectUrl = URL.createObjectURL(blob);
    saveAs(blob, 'Trek-Results-'+fetchCurrentDate()+ '.xlsx');
  }
}

使用FileSaver.js保存文件。

输出文件为[Object,Object]

测试了本地生成的文件。

这是一个类似的问题供参考,但对我没有帮助。

receive an excel file as response in javascript from a Rest service

1 个答案:

答案 0 :(得分:0)

我刚刚注意到Java服务器与Angular客户端的Mime类型不同 此link显示与电子表格相关的不同MIME类型 尝试使它们保持一致,看看是否修复了它 还有this way没有误导。