Skip to main content

Excel

The Excel provider exports data using exceljs.

Provider arguments

This provider is selected when type is excel.

Required fields

FieldTypeRequiredNotes
type'excel'✅ YesMust be excel.
dataArray<object>✅ YesArray of rows (objects).

options (optional)

FieldTypeRequiredDefaultNotes
options.headersstring[]❌ NoIf provided, defines column order/keys. If omitted, keys are derived from the first row object.
options.headersMapRecord<string,string>❌ NoMaps field keys to column header titles.
options.sheetNamestring❌ NoSheet1Worksheet name.
options.columnOptionsRecord<string, { width?: number; style?: { numFmt?: string } }>❌ NoColumn-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 }.