diff --git a/package.json b/package.json index f883333..c0b6a64 100755 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "md5": "^2.3.0", "mini-svg-data-uri": "^1.4.3", "mysql2": "^2.3.3", + "node-xlsx": "^0.17.2", "svg-captcha": "^1.4.0", "typeorm": "^0.2.41" }, diff --git a/src/app/modules/demo/controller/app/excel.ts b/src/app/modules/demo/controller/app/excel.ts new file mode 100644 index 0000000..21b6907 --- /dev/null +++ b/src/app/modules/demo/controller/app/excel.ts @@ -0,0 +1,49 @@ +import { Get, Inject, Post, Provide } from '@midwayjs/decorator'; +import { CoolController, BaseController } from '@cool-midway/core'; +import xlsx from 'node-xlsx'; +import { Context } from 'egg'; +import * as fs from 'fs'; + +/** + * 导入导出 + */ +@Provide() +@CoolController() +export class DemoExcelController extends BaseController { + @Inject() + ctx: Context; + + /** + * 导入 + */ + @Post('/import') + async import() { + // 读取上传上来的文件 + const file = this.ctx.request.files[0]; + try { + // 解析文件 + const data = xlsx.parse(file.filepath); + console.log(data); + } finally { + fs.unlinkSync(file.filepath); + } + return this.ok(); + } + + /** + * 导出 + */ + @Get('/export') + async export() { + const data = [ + ['姓名', '年龄'], + ['啊平', 18], + ['江帅', 19], + ]; + const buffer = xlsx.build([{ name: '成员', data: data }]); + const fileName = '导出.xlsx'; + this.ctx.attachment(fileName); + this.ctx.status = 200; + this.ctx.body = buffer; + } +}