Excel Export Angular 5 Получить запросы - PullRequest
0 голосов
/ 24 мая 2018

У меня есть конечная точка, которую я пингую через GET, и она отвечает листом Excel, что должен быть автоматически загружен, чтобы пользователь мог просматривать.

Я использую Angular 5 и неуверен, как обработать ответ этого API и вызвать автоматическую загрузку ...

Я могу просмотреть ответ в моей консоли с помощью большого двоичного объекта в моей консоли * прямо сейчас я просто console.logging ответ от API

консольный вывод

Так выглядит моя сервисная функция до сих пор ...

getPurgeExeclReport(queryParam): Observable<any> {

  // everything regarding param contructed in Class

    this.searchUrl = `${this.searchUrl}${queryParam}`;

    return this.http.get<any>(this.searchUrl, {responseType: 'blob'});
  }

// в моем компоненте

  this.purgeEligibleReportService.getPurgeExeclReport(queryParams)
   .subscribe(result => {

    console.log(result, 'result')

   });

Пожалуйста, помогите!

1 Ответ

0 голосов
/ 24 мая 2018

попробуйте попробовать это ..

, прежде чем сделать

npm i --save file-saver @types/file-saver

, а затем в своем ts:

import * as FileSaver from 'file-saver';

public async DownloadRicetta(id: string, name: string): Promise<Blob> {
    return new Promise<Blob>((resolve, reject) => {
      const headers = new HttpHeaders();
      headers.append('Accept', 'text/plain');

      this._http.get(environment.API_URL + `endpoint`, { headers: headers, responseType: "blob", observe: 'response' })
        .subscribe(response => {
          try {
            let blob = this.saveToFileSystem(response, name);
            resolve(blob);
          } catch (error) {
            reject(error);
          }
        });
    });

  }

  private saveToFileSystem(response, name: string): Blob {
    const contentDispositionHeader: string = response.headers.get('Content-Disposition');

    //for get original filename
    const parts: string[] = contentDispositionHeader.split(';');
    const filename = parts[1].trim().split('=')[1].trim();

    //get extension of the file
    const parts2: string[] = contentDispositionHeader.split('.');
    let ext = parts2[1];
    ext = ext.replace('"', '')
    //set mimetype

    const blob = new Blob([response.body], { type: 'YOURMIMETYPE'});
    FileSaver.saveAs(blob, name + '_ricetta.' + ext);

    return blob;
  }

Надеюсь, это поможет вам !!

...