Javascript 如何在前端从后端加载excel文件?

Javascript 如何在前端从后端加载excel文件?,javascript,node.js,reactjs,xlsx,js-xlsx,Javascript,Node.js,Reactjs,Xlsx,Js Xlsx,我想在浏览器上下载在后端生成的excel文件,但我不知道如何传递这种响应 app.get('/all', function (req, res) { db.query(...) LIMIT 20000;") .then(function (data) { let result = [] data.forEach(element => { result.push(element) })

我想在浏览器上下载在后端生成的excel文件,但我不知道如何传递这种响应

app.get('/all', function (req, res) {
    db.query(...) LIMIT 20000;")
    .then(function (data) {
        let result = []
        data.forEach(element => {
            result.push(element)
        })

        /* make the worksheet */
        var ws = XLSX.utils.json_to_sheet(data);

        /* add to workbook */
        var wb = XLSX.utils.book_new();
        XLSX.utils.book_append_sheet(wb, ws, "All");

        XLSX.writeFile(wb, 'alltest1.xlsx'); //This saves the file in my server but I don't know how to send it as a response.

        console.log('Ready');

        res.send(result);
    })
    .catch(function (error) {
        console.log("ERROR:", error)
    })
})

我一直在尝试在前端创建excel,但chrome内存不足,因为我认为有大量数据。我还尝试传递缓冲区,但我得到的文件似乎已损坏。

设置响应头和文件的响应头,该文件告诉浏览器该文件是作为响应发送的

res.setHeader('Content-Disposition',
        "attachment; filename='alltest1'; filename*=UTF-8\'\'alltest1.xlsx");
res.setHeader('Content-Type', "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
res.send(wb)
并将文件内容作为响应发送

res.setHeader('Content-Disposition',
        "attachment; filename='alltest1'; filename*=UTF-8\'\'alltest1.xlsx");
res.setHeader('Content-Type', "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
res.send(wb)
您也可以使用


这应该会在我的浏览器中启动下载?你试过了吗?也许我遗漏了一些东西,但我仍然没有得到文件。你在响应中得到了什么?有了这些和我前面的一些调整,我设法解决了问题。