angular 7 Как экспортировать содержимое в формате ngx-datatable в таблицу Excel? - PullRequest
0 голосов
/ 07 мая 2020

У меня есть pb с ngx-datatable и export excel. Я пытаюсь использовать fileSaver с angular 7. Я реализую кнопку для экспорта и делаю на ней следующее:

var blob = new Blob([document.getElementById("exportable").innerText], {
  type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8"
  //type: "application/vnd.ms-excel;charset=utf-8"
});

затем saveAs(blob, "Report.xls");

«экспортируемый» - это идентификатор ngx-datatable:

<ngx-datatable id="exportable" #table
               class="mytable"
               [rows]="rows"
               [columns]="columns">

, но я получаю файл xls с одним столбцом белого цвета и все примерно так:

enter image description here

do вы знаете, как сделать, чтобы получить представление файла Excel, такое как мой ngx-datatable?

Спасибо!

1 Ответ

0 голосов
/ 15 июля 2020

Я наконец нашел это решение, которое мне подходит. Я публикую здесь для пользователей, которые ищут это: my exportService:

const EXCEL_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';
const EXCEL_EXTENSION = '.xlsx';

@Injectable({
  providedIn: 'root'
})
export class ExportService {

  constructor( private notifService: NotifService) { }

  public exportAsExcelFile(rows: any[], excelFileName: string): void {
    if (rows.length > 0) {
      const worksheet: XLSX.WorkSheet = XLSX.utils.json_to_sheet(rows);
      const workbook: XLSX.WorkBook = {Sheets: {'Compte-rendu': worksheet}, SheetNames: ['Compte-rendu']};
      const excelBuffer: any = XLSX.write(workbook, {bookType: 'xlsx', type: 'array'});
      this.saveAsExcelFile(excelBuffer, excelFileName);
    }else{
      this.notifService.message('Aucune ligne à exporter...');
    }
  }
  private saveAsExcelFile(buffer: any, baseFileName: string): void {
    const data: Blob = new Blob([buffer], {type: EXCEL_TYPE});
    FileSaver.saveAs(data, baseFileName + '_' + this.getDateFormat(new Date())  + EXCEL_EXTENSION);
  }

  private getDateFormat(date: Date): string {
    return formatDate(date, 'yyyyMMdd_HHmmss', 'en-US');
  }
}

Пока!

...