后端
yarn add xlsx
import * as XLSX from 'xlsx';
@Post('/exportExcel')
@SetHeader('Content-Type', 'application/vnd.ms-excel')
async exportExcel(@Body() payload: any): Promise<any> {
const res = await this.dataService.getExportData(payload);
const jsonWorkSheet = XLSX.utils.json_to_sheet(res.data.list);
const workBook = {
SheetNames: ['我的报表'],
Sheets: {
'我的报表': jsonWorkSheet,
}
};
const buf = XLSX.write(workBook, { bookType: 'xlsx', type: 'buffer' });
return this.ctx.success(buf);
}
前端
const res = await ReportService.exportExcel({});
downLoadFile(res)
const downLoadFile = (res: any) => {
if (!res || !res.data) {
toast('导出异常,请稍后重试')
return
}
const url = window.URL.createObjectURL(new Blob([new Uint8Array(res.data.data)], {type:"application/octet-stream"}))
const link = document.createElement('a')
link.href = url
link.setAttribute('download', `我的报表${dayjs(Date.now()).format('YYYY-MM-DD HH:mm:ss')}.xlsx`)
document.body.appendChild(link)
link.click()
}
注意