I am trying to download a file that I created with ClosedXML. I have verified that the file is not corrupt but, for some reason, it works just with Angular1, not Angular2.
This is what worked for me(make sure that service indeed sends back xlsx file as response):
Install these dependencies for show "save file" pop-up
npm install file-saver --save-dev
npm install @types/file-saver --save-dev
Import in your service:
import * as FileSaver from 'file-saver';
Usage:
downloadFile(): void {
let url: string = “http://yourdomain.com/exports/excelExport.aspx”;
let headers = new Headers({ 'Content-Type': 'application/json'} );
//in case you have custom headers, else you can ignore this part
headers.set('x-custom-header1', “some value”);
headers.set('x-custom-header2', “some value2”);
let options = new RequestOptions({responseType: ResponseContentType.Blob, headers });
this.http.get(url, options)
.map(res => res.blob())
.subscribe(
data => {
FileSaver.saveAs(data, 'Export.xlsx');
},
err => {
console.log('error');
console.error(err);
});
}