Преобразование таблицы угловых данных в файл xlsx - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть таблица данных в угловых.Я хочу, чтобы таблица данных загружалась в виде файла xlsx, когда пользователь нажимает кнопку загрузки.

Я пытался использовать эту статью https://medium.com/@madhavmahesh/exporting-an-excel-file-in-angular-927756ac9857 Но это не работает с Angular 7.

Каков наилучший подход для достижения этой цели?

Ответы [ 2 ]

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

Вы можете сделать это с помощью Blob и file-saver:

Код TS:

Установите файл-заставку, используя

npm i angular-file-saver

и

import { saveAs } from 'file-saver';

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

для HTML добавьте id="exportable" к соответствующей таблице.

Рабочий StackBlitz

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

Выполнить npm i xlsx

HTML:

 <div class="example-container mat-elevation-z8 " #TABLE>
      <table mat-table #table [dataSource]="dataSource">

        <!--- Note that these columns can be defined in any order.
              The actual rendered columns are set as a property on the row definition" -->

        <!-- Position Column -->
        <ng-container matColumnDef="position">
          <th mat-header-cell *matHeaderCellDef> No. </th>
          <td mat-cell *matCellDef="let element"> {{element.position}} </td>
          //..................................rest of the html
        <button mat-raised-button color="primary" (click)="exportAsExcel()">Export as Excel</button></div>

В вашем компоненте

import {Component,ViewChild, ElementRef} from '@angular/core';
 import * as XLSX from 'xlsx';
//......
    export class AppComponent  {
      @ViewChild('TABLE') table: ElementRef;
    exportAsExcel()
    {
      const ws: XLSX.WorkSheet=XLSX.utils.table_to_sheet(this.table.nativeElement);//converts a DOM TABLE element to a worksheet
      const wb: XLSX.WorkBook = XLSX.utils.book_new();
      XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');

      /* save to file */
      XLSX.writeFile(wb, 'SheetJS.xlsx');

    }
    }

Демо : https://stackblitz.com/edit/angular-uyanwz

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...