06 April 2021

Download a file excel with Angular 2 (Blob)

 Download File Excel in Angular 2

download-file.component.ts

import { ComponentOnInit } from '@angular/core';
import { ApiService } from 'src/app/shared/services/api.service';

@Component({
  selector: 'app-download-file',
  templateUrl: './download-file.component.html',
  styleUrls: ['./download-file.component.scss'],
})
export class downloadFileComponent implements OnInit {

  constructor(
    private apiApiService,
  ) {}

  ngOnInit(): void {}

  public onDownload(idnumber): void {
    const bodyParams = { id: id };
    const header = {
      observe: 'response',
      responseType: 'blob' as 'json',
    };
    this.api.post('/outputExcel'bodyParamsheader).subscribe(
      (resany=> {
/* Get filename */ const disposition res?.headers.get('Content-Disposition');
        const filename decodeURIComponent(disposition?.split(';')[1]?.split('filename')[1]?.split('=')[1]?.trim()?.slice(1, -1));
        /* Get blob */
        const blob = new Blob([res.body], {
          type:
            'application/vnd.openxmlformats officedocument.spreadsheetml.sheet',
        });
        const url = window.URL.createObjectURL(blob);
        // const fileName = `[Report]_${new Date().getTime()}.xlsx`;
        /* Download */
        this.downloadURI(urlfileName);
      },
      (err=> {
        alert('Download failed');
      }
    );
  }

  public downloadURI(uristringname?: string): void {
    const link = document.createElement('a');
    // If you don't know the name or want to use
    // the webserver default set name = ''
    if (name) {
      link.setAttribute('download'name);
    }
    link.href = uri;
    document.body.appendChild(link);
    link.click();
    link.remove();
  }
}


0 nhận xét:

Post a Comment

 

BACK TO TOP

Xuống cuối trang