Excel
The Excel provider exports data using exceljs.
Provider arguments
This provider is selected when type is excel.
Required fields
| Field | Type | Required | Notes |
|---|---|---|---|
type | 'excel' | ✅ Yes | Must be excel. |
data | Array<object> | ✅ Yes | Array of rows (objects). |
options (optional)
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
options.headers | string[] | ❌ No | — | If provided, defines column order/keys. If omitted, keys are derived from the first row object. |
options.headersMap | Record<string,string> | ❌ No | — | Maps field keys to column header titles. |
options.sheetName | string | ❌ No | Sheet1 | Worksheet name. |
options.columnOptions | Record<string, { width?: number; style?: { numFmt?: string } }> | ❌ No | — | Column-level options keyed by field name (width and number format). |
Example
export.service.ts
import { Injectable } from '@nestjs/common';
import { DataExporterService } from 'nestjs-export-module';
@Injectable()
export class ExportService {
constructor(private readonly exporter: DataExporterService) {}
async exportExcel(rows: Array<object>) {
return this.exporter.exportAsync({
type: 'excel',
data: rows,
options: {
sheetName: 'Users',
headers: ['id', 'name', 'salary'],
headersMap: { id: 'ID', name: 'Name', salary: 'Salary' },
columnOptions: {
salary: { width: 16, style: { numFmt: '#,##0.00' } },
},
},
});
}
}
Notes
- Suitable for richer spreadsheets (multiple sheets, formatting, etc.).
- This provider returns
{ mimeType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', extension: 'xlsx', data: Buffer }.