nestjs导入导出excel文件
时间: 2023-10-19 09:34:12 浏览: 177
在 NestJS 中导入和导出 Excel 文件可以使用 `exceljs` 库来实现。以下是一个简单的示例:
首先,确保已经安装了 `exceljs` 这个库:
```
npm install exceljs
```
然后,创建一个导出 Excel 的函数:
```typescript
import { Injectable } from '@nestjs/common';
import * as ExcelJS from 'exceljs';
import { Response } from 'express';
@Injectable()
export class ExcelService {
async exportToExcel(data: any[], res: Response, filename: string) {
const workbook = new ExcelJS.Workbook();
const worksheet = workbook.addWorksheet('Sheet 1');
// 将数据写入工作表
worksheet.addRows(data);
// 设置响应头,告诉浏览器下载文件
res.setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
res.setHeader('Content-Disposition', `attachment; filename=${filename}.xlsx`);
// 将工作簿数据写入响应流
await workbook.xlsx.write(res);
// 结束响应
res.end();
}
}
```
在你的控制器中使用 `ExcelService` 导出 Excel 文件:
```typescript
import { Controller, Get, Res } from '@nestjs/common';
import { ExcelService } from './excel.service';
@Controller('excel')
export class ExcelController {
constructor(private readonly excelService: ExcelService) {}
@Get('export')
async exportToExcel(@Res() res) {
const data = [
['Name', 'Age'],
['John Doe', 30],
['Jane Smith', 25],
// 更多数据行...
];
await this.excelService.exportToExcel(data, res, 'data');
}
}
```
在这个例子中,我们创建了一个 `ExcelService` 来处理 Excel 相关的操作。在 `exportToExcel` 方法中,我们使用 `exceljs` 创建一个工作簿,将数据写入工作表,并将工作簿数据写入响应流中,实现了导出 Excel 文件的功能。
在控制器中,我们通过 `@Get('export')` 装饰器创建了一个 GET 路由,当用户访问 `/excel/export` 时,会触发 `exportToExcel` 方法导出 Excel 文件。
注意:以上示例是基于 NestJS 的示例,你需要在自己的项目中相应地进行配置和使用。