Я работаю с приложением angular -7. У меня есть образец файла Excel в src / assets. Я реализовал метод загрузки вложения, чтобы загрузить образец файла Excel. Я могу загрузить его, но при открытии загруженного образца файла Excel получаю сообщение об ошибке. Описание ошибки: Excel не может открыть файл sample.xlsx из-за недопустимого формата или расширения файла. Убедитесь, что файл не был поврежден и его расширение соответствует формату файла.
component.component. html
<button mat-raised-button (click)="downloadexcelfile()">
<button mat-raised-button (click)="download()">
component.component.ts
downloadexcelfile() {
if(navigator.msSaveBlob) {
// to support in IE 10+
let data: any;
this.HttpClient.get("./assets/sample.xlsx",{responseType: "blob"}).subscribe((res:any) => {
data = res;
// approach - 1
let csvData = new Blob([data], { type: 'text/csv;charset=utf-8;'});
// approach - 2
let csvData = new Blob([data], { type: 'application/vnd.ms-excel'});
// approach - 3
let csvData = new Blob([data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'});
navigator.msSaveBlob(csvData, "sample.xlsx");
})
}
else if(!navigator.msSaveBlob) {
let link = document.createElement("a");
link.href = "assets/sample.xlsx";
link.download = "sample.xlsx";
link.click();
window.URL.revokeObjectURL(link.href);
link.remove();
}
}
// approach - 4
download() {
if(navigator.msSaveBlob) {
// to support in IE 10+
let data: any;
this.HttpClient.get("./assets/sample.xlsx",{responseType: "arraybuffer"}).subscribe((res:any) => {
data = res;
// approach - 5
let csvData = new Blob([data], { type: 'text/csv'});
// approach - 6
let csvData = new Blob([data], { type: 'application/vnd.ms-excel'});
// approach - 7
let csvData = new Blob([data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'});
navigator.msSaveBlob(csvData, "sample.xlsx");
})
}
else if(!navigator.msSaveBlob) {
let link = document.createElement("a");
link.href = "assets/sample.xlsx";
link.download = "sample.xlsx";
link.click();
window.URL.revokeObjectURL(link.href);
link.remove();
}
}
Я пробовал использовать несколько подходов и потратил около 5 дней, чтобы решить эту проблему. тем не менее, я пытаюсь понять. Может ли кто-нибудь помочь мне с этим. Заранее спасибо.