如何从 NestJS 控制器 return 一个 excel 文件

How to return an excel file from NestJS Controller

所以我正在从我的猫鼬数据库中读取大量数据并将它们写入 SheetJS 的 XLSX 中。我想 return 从我的控制器下载一个文件。我在下面得到了一个对象,问题是我如何 return 下载这个对象?

const wbout = XLSX.write(wb, { bookType: 'xlsx', type: 'buffer' });

我用下面的代码完成了。 Header 提示文件下载,类型设置正确的文件类型,您可以使用 res.send()

发送
res.header('Content-disposition', 'attachment; filename=anlikodullendirme.xlsx');
res.type('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
return res.send(buffer);

你可以尝试这样实现它:

import {Readable} from "stream";
import {readFileSync} from 'fs';
import {Response} from 'express';

    @Get('')
    async createFile(@Res() res: Response) 
    {
        var buffer = readFileSync('/path_to_file');

        const stream = new Readable();
        stream.push(buffer);
        stream.push(null);

        res.set({
            'Content-Type': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
            'Content-Length': buffer.length,
        });
        stream.pipe(res);
    }