方法一:使用writeFile写文件后再用readFileSync读文件返回
var Excel = require('exceljs');
var workbook = new Excel.Workbook();
var ws1 = workbook.addWorksheet('表名');
ws1.addRow('数据')
workbook.xlsx.writeFile('文件路径及文件名').then(function(){
rh.setHeader('Content-Type', 'application/vnd.openxmlformats');
rh.setHeader('Content-Disposition', 'attachment; filename='文件名' );
var exlBuf = fs.readFileSync(filepath + filename);
rh.setBody(exlBuf);
setTimeout(function(){
fs.unlink('文件路径及文件名', function(err) {
});
}, 1000)
callback(null, rh);
});
方法二:使用xlsx.write的方式返回xlsx文件流
var Excel = require('exceljs');
const options = {
stream: res,
useStyles: true,
useSharedStrings: true
};
var workbook = new Excel.stream.xlsx.WorkbookWriter(options);
var ws1 = workbook.addWorksheet('表名');
ws1.addRow('数据').commit()
workbook.commit()
sendWorkbook(workbook,res)
async function sendWorkbook(workbook, response) {
response.setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
response.setHeader("Content-Disposition", "attachment; filename='文件名');
await workbook.xlsx.write(response);
response.end();
}