import { Component, inject } from '@angular/core';
import { STColumn, STData, STModule } from '@delon/abc/st';
import { XlsxService } from '@delon/abc/xlsx';
import { NzButtonModule } from 'ng-zorro-antd/button';
@Component({
selector: 'components-xlsx-export',
template: `
<button nz-button (click)="download('xlsx')">Export Xlsx</button>
<button nz-button (click)="download('csv')">Export Csv</button>
<st [data]="users" [ps]="3" [columns]="columns" class="mt-sm" />
`,
standalone: true,
imports: [NzButtonModule, STModule]
})
export class ComponentsXlsxExportComponent {
private readonly xlsx = inject(XlsxService);
users: STData[] = Array(100)
.fill({})
.map((_, idx) => ({
id: idx + 1,
name: `name ${idx + 1}`,
age: Math.ceil(Math.random() * 10) + 20
}));
columns: STColumn[] = [
{ title: '编号', index: 'id', type: 'checkbox' },
{ title: '姓名', index: 'name' },
{ title: '年龄', index: 'age' }
];
download(format: 'xlsx' | 'csv'): void {
const data = [this.columns.map(i => i.title)];
this.users.forEach(i => data.push(this.columns.map(c => i[c.index as string])));
this.xlsx.export({
sheets: [
{
data,
name: 'sheet name'
}
],
format
});
}
}