FileSaver.js с Angular 7 - PullRequest
       56

FileSaver.js с Angular 7

0 голосов
/ 15 декабря 2018

У меня есть случай, когда мне нужно загрузить данные в виде файла Excel.Я использую Angular 7 (UI) и сервис Java Spring REST API.REST API сгенерирует файл Excel и отправит его в Angular, где я использую модуль FileSaver.js для сохранения файла на диск.Я вижу созданный BLOB-объект и размер, напечатанный на консоли, но файл не сохраняется на диск.

Это работало, когда у меня был Angular 4. Любая помощь очень ценится.

Кроме того, если кто-нибудь может предложить альтернативный модуль узла для достижения того же результата, я полностью уверен.

Ниже приведен фрагмент кода на Angular

this.myService.getDataAsXLSX(this.dataList).
    subscribe(byteArray => { 
            this.excelFileAsByteArray = byteArray; 
        }, error => console.log("There was an error."), 
        () => { 
            const blob = new Blob([this.excelFileAsByteArray.body], {type:'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; ; charset=UTF-8'}); 
            console.log('Blob size in filtered = ' + blob.size); 
        FileSaver.saveAs(blob, "MyData-" + this.datePipe.transform(this.currentDate, 'MM-dd-yyyy') + ".xlsx"); } ); 

Вот код изREST API

    ByteArrayOutputStream outputStream = new ExcelWriter().createExcelWorkbook(dataList, fullName); 
    byte[] byteArray = outputStream.toByteArray();
    HttpHeaders responseHeaders = new HttpHeaders();

responseHeaders.set("Content-Type","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; ; charset=UTF-8");

responseHeaders.set("Content-Disposition", "attachment;filename=MyData.xlsx"); responseHeaders.set("Expires", "0");

    return new ResponseEntity(byteArray, responseHeaders, HttpStatus.OK);

1 Ответ

0 голосов
/ 15 декабря 2018

Вы установили responseType как «blob» как «json».Тип контента как 'application / vnd.ms-excel'

public getDataAsXLSX(list: Array<any>) {
    return this.http.get(this.url, {
         headers: this.headers,
         responseType: 'blob' as 'json'
    });
}
...