![](/img/trans.png)
[英]Date not showing in my Excel file which is created on Nodejs with Exceljs
[英]Exceljs+nodejs to serve excel stream
假设我想使用 exceljs 为 web 客户端提供 excel。 另外,假设我正在使用流式传输(由于文件可能很大并且不想将它们保存在内存中)。
是否可以找出 Content-Length 标头应该是什么? 因为没有这个,我看不到 chrome 的下载进度微调器。
示例代码:
app.get('/some/route', function(req, res) {
res.writeHead(200, {
'Content-Disposition': 'attachment; filename="file.xlsx"',
'Content-Type': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
"Content-Length" : inf //this is what I want!!
})
var workbook = new Excel.stream.xlsx.WorkbookWriter({ stream: res })
var worksheet = workbook.addWorksheet('some-worksheet')
worksheet.addRow(['foo', 'bar']).commit()
worksheet.commit()
workbook.commit()
}
尝试这个。
res.set({
'Content-Disposition': 'attachment; filename="ireshansexcel.xlsx"',
'Content-Type': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
});
const workbook = new Excel.Workbook();
const worksheet = workbook.addWorksheet('Survey');
//your excel worksheet content
//commit everything
let fileBuffer = await workbook.xlsx.writeBuffer();
res.send(fileBuffer);
我一直在 exceljs 中使用writeBuffer()
方法,似乎它与进度微调器一起工作正常。 但我处理过小文件。 但是您可以测试这种方法。 我使用这种方法是因为上面你提到的方法在 azure 函数中对我不起作用。
除了@ireshan pathirana 答案,
workbook.xlsx.write<\/code>可以使用,不需要文件缓冲区(
res.set({
'Content-Disposition': 'attachment; filename="ireshansexcel.xlsx"',
'Content-Type': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
});
const workbook = new Excel.Workbook();
const worksheet = workbook.addWorksheet('Survey');
//your excel worksheet content
//commit everything
workbook.xlsx.write(res);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.