node生成excel并发送流文件到前端

var express = require('express');
var router = express.Router();
var xlsx = require('node-xlsx');
var fs = require('fs');
var Task_listSchema = require('../../../model/Task_listSchema');
var sql = require("../../../model/index")
stream = require('stream')

/* GET home page. */

router.get('/', function (req, res) {
    Task_listSchema.find({ "start": { "$gte": req.query.start, "$lte": req.query.end } }, function (err, docs) {
        if (docs.length != 0) {
            let array1 = [];
            let newarr = [];
            let itemarr = ["项目名称", "任务详情", "任务开始时间", "任务结束时间"]
            for (let j = 0; j < docs.length; j++) {
                // array1.push(docs[j].start,docs[j].end)
                array1[0] = docs[j].project_name
                array1[1] = docs[j].task_details
                array1[2] = docs[j].start
                array1[3] = docs[j].end
                newarr.push(array1)
                array1 = []
            }

            var list = [{
                name: docs[0].project_name,
                    data: [
                        itemarr,
                        ...newarr
                ]
            }];
            
            var buffer = xlsx.build(list);
            res.set('Content-Type', 'application/octet-stream;charset=utf-8;');
            res.set("Content-Disposition", `attachment;filename=${encodeURIComponent('结果呢')}.xlsx`);

            // let data = fs.createReadStream(path.join(__dirname, '../../public/ha.xlsx'));
            // buffer.pipe(res)
            let readStream = new stream.PassThrough();
            readStream.end(buffer);
            readStream.pipe(res);

            return;
        } else {
            res.json({
                data: [],
                meta: {
                    msg: "目前没有任务。",
                    status: 417
                }
            })
        }
    });

    // console.log("1221")




})



module.exports = router;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值