我创建了使用JExcelApi lib以excel格式导出数据的示例项目。项目有Angular 2前端和spring mvc(rest api)后端。如果我将后端部署到tomcat并通过浏览器发出请求,那么它正在正确导出excel文件但是当我使用angular 2(typescript)进行相同的http调用时,它会在excel文件中写入我的api的url并显示为损坏的excel文件
项目位于以下github位置
有人可以告诉我我的服务或app.component.ts文件有什么问题吗?
以下是app.component.ts中的代码库,我认为这会导致问题
downloadExcel(){
console.log("Downloading excel from server....")
this.fileService.downloadFile()
.subscribe(data => window.open(window.URL.createObjectURL(data)),
error => console.log("Error downloading the file."),
() => console.log('Completed file download.'));
}
这是返回数据的服务类
downloadFile(){
let url = "http://localhost:9999/api/download";
var headers = new Headers();
headers.append('responseType', 'arraybuffer');
return this._http.get( url)
.map(res => new Blob([res],{ type: 'application/vnd.ms-excel' }))
.catch((error : any ) => Observable.throw(error));
}
答案 0 :(得分:0)
我已经修复了FileSaver.js的问题,以防有人遇到此问题。看看上面的github项目
答案 1 :(得分:0)
最好使用window.location.assign(link);
代替。