如何将 Angular Material Table 导出为 excel 或 pdf 或 csv

How to export Angular Material Table to excel or pdf or csv

我正在使用 angular material https://material.angular.io/components/table/overview 中的示例创建 angular table 是否可以将其导出为 excel 或 pdf?

在你的tablecomponent.ts

声明一个名为 renderedData: any;

然后在您的构造函数中订阅已在您的material table 中更改的数据。我猜你正在使用可过滤的 table.

constructor(){
this.dataSource = new MatTableDataSource(TableData);
this.dataSource.connect().subscribe(d => this.renderedData = d);
}

npm install --save angular5-csv

在您的 HTML 中创建一个按钮 <button class="btn btn-primary" (click)="exportCsv()">Export to CSV</button>

最后,将更改后的数据导出为 CSV

exportCsv(){
new Angular5Csv(this.renderedData,'Test Report');
}

可以在此处找到有关出口商的更多详细信息:https://www.npmjs.com/package/angular5-csv

希望对您有所帮助:)

您可以使用 ngx-csv Angular 7 工作正常“https://www.npmjs.com/package/ngx-csv。” 从 table 获取数据 "this.dataSource.connect().subscribe(data=>this.renderedData=data);" 然后使用导出功能。

您可以使用 mat-table-exporter 包以 excel、csv、json 或 txt 格式导出。它也支持分页表格。

Stackblitz 演示: https://stackblitz.com/edit/mte-demo

您可以使用 mat-table-exporter。要访问打字稿代码中的“导出”方法:

@ViewChild("exporter") exporter! : MatTableExporterDirective;

<table mat-table matTableExporter [dataSource]="dataSource" 
                               #exporter="matTableExporter">

不使用任何库都可以完成。对于动态功能,请勿将 html 元素转换为 csv。比如,如果想实现分页等等,那么可以这样实现:

exportCsv(): void {
  let csv = '';
  for (let column = 0; column < this.columns.length; column++) {
    csv += this.columns[column] + ';';
    csv = csv.replace(/\n/g, '');
  }
  csv = csv.substring(0, csv.length - 1) + '\n';
  const rows = this.filterdRows;

  for (let row = 0; row < rows.length; row++) {
   for (let rowElement = 0; rowElement < rows[row].length; rowElement++) {
      csv += rows[row][rowElement] + ';';
   }
    csv = csv.substring(0, csv.length - 1) + '\n';
  }
  csv = csv.substring(0, csv.length - 1) + '\n';
  const docElement = document.createElement('a');
  const universalBOM = '\uFEFF';

  //You can edit the code for the file name according to your requirements
  let filename = this.filename + '_';
  filename = filename.concat(this.currentDateString.toString());
  const fileNameWithType = filename.concat('.csv');
  docElement.href = 'data:text/csv;charset=utf-8,' + encodeURI(universalBOM + csv);
  docElement.target = '_blank';
  docElement.download = fileNameWithType;
  docElement.click();
}