首页 > 解决方案 > 需要在客户端浏览器中创建 Excel 文件并下载 - 是否可以创建文件流并在 Node Express 响应中发送?

问题描述

我想在 Node Express 中创建一个 Excel 文件流,并在 Node Express 响应中发送 Excel 文件,然后由客户端浏览器下载。问题是我对流完全没有经验,我什至不确定这是可能的。

一点背景知识:我正在使用节点包 ExcelJs ( https://www.npmjs.com/package/exceljs ) 创建 Excel 文档。我可以很好地创建 Excel 文件。我知道 Express 提供 res.download 选项来将文件下载到客户端浏览器,但我认为 res.download 需要一个带有路径的实际文件才能下载到客户端浏览器。此代码将托管在 AWS 上,我希望避免在抓取文件并将其下载到客户端浏览器之前必须在 S3 中创建和保存文件。

ExcelJS 可以选择创建一个;文件、流或缓冲区 Excel。是否可以创建具有所需数据的流,然后在响应中发送该文件流以在客户端浏览器中下载?

标签: amazon-web-servicesexpressexceljs

解决方案



//Create a middleware and a readable stream

const excelStream = //generate your excel stream here

//Filestream middleware
const streamW = () => {
return (req, res, next) => {

//Pipe the excel stream to the response
excelStream.pipe(res)
 next()
  }
}


router.get('/excelstream', streamW()/* consume the middleware*/, (req, res) => {
 //Send the data to the front end
 res
});


推荐阅读