[nodejs]excel表格导出

要达到的效果:

excel导出
说明:点击导出按钮,实现表格的excel导出。

使用的插件:

nodeExcel = require(‘excel-export’)

代码:

sql.saveTidExcelFile = function(req, res){
  var id = req.params['id'];
  var filename = "The_"+id+"_group_randomOut";
  if(id.split('.').length>1){
    var trid = id;
    var selSQL = "select *from csp_random_allocated_results where trid='"+trid+"'order by gid, CAST(cindex as SIGNED) asc"
    var nameSql ="select gid, gname from csp_group where gid in (select gid from csp_random_allocated_results where trid = '"+trid+"')";
    csp.db.query(nameSql, function(err, nameData){
      if(!err){
        var name = nameData;
        csp.db.query(selSQL,function(err,data){
          if(!err){
            var tidRandomData = data;
            var cols = []
            var rows = []
            var titles = [
                "序号","证券代码","证券名称","心愿数量","实际分券数量","所属小组"
            ]

              //规定列数和类别
                for(var i=0; i<titles.length; i++){
                    var item = {}
                    item.caption = titles[i];
                    item.type = 'string'
                    cols.push(item)
                }
                console.log(JSON.stringify(tidRandomData))
                for(var a=0;a<tidRandomData.length;a++){
                  for(var b=0;b<name.length;b++){
                    if(tidRandomData[a].gid == name[b].gid){
                      tidRandomData[a].gid = name[b].gname+'('+name[b].gid+')';
                    }
                  }
                }
                console.log(JSON.stringify(tidRandomData))
                for(var i=0; i<tidRandomData.length; i++){
                    var item = []
                    item.push((tidRandomData[i].cindex).toString())
                    item.push(tidRandomData[i].cid)
                    item.push(tidRandomData[i].cname)
                    item.push(tidRandomData[i].amount)
                    item.push((tidRandomData[i].post_allocated_amount).toString())
                    item.push((tidRandomData[i].gid))
                    rows.push(item)
                }

               var conf = { };
               conf.cols = cols
               conf.rows = rows

               var result = nodeExcel.execute(conf);

               if(typeof filename === 'undefined'){
                   filename = new Date();
               }
               // console.log("uyuyuyu",filename)
               res.setHeader('Content-Type', 'application/vnd.openxmlformats');
               res.setHeader("Content-Disposition", "attachment; filename=" + filename +  ".xlsx");
               res.end(result, 'binary');
          }

        })
      }
    })
  }
  else{
    var gid = id;
    var selSQL="select *from csp_random_allocated_results where gid="+gid+" order by cindex*1"
    var nameSql = "select gid,gname from csp_group where gid = '"+gid+"'"
    csp.db.query(nameSql,function(err,nameData){
      var name =nameData;
      if(!err){
        csp.db.query(selSQL, function(err, data){
          if(!err){
            var tidRandomData = data;
            var cols = []
            var rows = []
            var titles = [
                "序号","证券代码","证券名称","心愿数量","实际分券数量","所属小组"
            ]
            for(var a=0;a<tidRandomData.length;a++){
              for(var b=0;b<name.length;b++){
                if(tidRandomData[a].gid == name[b].gid){
                  tidRandomData[a].gid = name[b].gname+'('+name[b].gid+')';
                }
              }
            }
              //规定列数和类别
                for(var i=0; i<titles.length; i++){
                    var item = {}
                    item.caption = titles[i];
                    item.type = 'string'
                    cols.push(item)
                }
                for(var i=0; i<tidRandomData.length; i++){
                    var item = []
                    item.push((tidRandomData[i].cindex).toString())
                    item.push(tidRandomData[i].cid)
                    item.push(tidRandomData[i].cname)
                    item.push(tidRandomData[i].amount)
                    item.push((tidRandomData[i].post_allocated_amount).toString())
                    item.push((tidRandomData[i].gid))
                    rows.push(item)
                }

               var conf = { };
               conf.cols = cols
               conf.rows = rows

               var result = nodeExcel.execute(conf);

               if(typeof filename === 'undefined'){
                   filename = new Date();
               }
               // console.log("uyuyuyu",filename)
               res.setHeader('Content-Type', 'application/vnd.openxmlformats');
               res.setHeader("Content-Disposition", "attachment; filename=" + filename +  ".xlsx");
               res.end(result, 'binary');
          }


        })
      }



    })
  }

前端url控制

window.location = ‘/r/excel’+id

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值