Невозможно загрузить файл Excel из src / assets в среде разработки / qa / prod для приложения angular - PullRequest
0 голосов
/ 29 мая 2020

Я работаю с приложением 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 дней, чтобы решить эту проблему. тем не менее, я пытаюсь понять. Может ли кто-нибудь помочь мне с этим. Заранее спасибо.

1 Ответ

0 голосов
/ 29 мая 2020
    this.HttpClient.get("./assets/sample.xlsx",{responseType: "blob"}).subscribe((res:any) => { 
          const url= window.URL.createObjectURL(res);
          window.open(url);
    });
...