[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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Node.js 可以使用第三方库将 MySQL 数据导出Excel 文件。以下是使用 `mysql` 和 `exceljs` 这两个库实现导出的示例代码: 首先,你需要通过 `npm` 安装这两个库: ``` npm install mysql exceljs ``` 然后创建一个 `exportExcel.js` 文件,并将以下代码复制到文件中: ```javascript const mysql = require('mysql'); const ExcelJS = require('exceljs'); // 创建 MySQL 连接 const connection = mysql.createConnection({ host: 'localhost', user: 'root', password: 'password', database: 'database_name', }); // 连接 MySQL connection.connect((error) => { if (error) { console.error('Error connecting to MySQL:', error); return; } console.log('Connected to MySQL'); // 查询数据 connection.query('SELECT * FROM table_name', (error, results) => { if (error) { console.error('Error querying MySQL:', error); return; } console.log('Retrieved data from MySQL'); // 创建工作簿 const workbook = new ExcelJS.Workbook(); const worksheet = workbook.addWorksheet('Sheet 1'); // 将数据添加到工作表 results.forEach((row, index) => { const rowIndex = index + 1; Object.values(row).forEach((value, columnIndex) => { const cellIndex = columnIndex + 1; worksheet.getCell(`${String.fromCharCode(64 + cellIndex)}${rowIndex}`).value = value; }); }); // 保存工作簿为 Excel 文件 workbook.xlsx.writeFile('export.xlsx') .then(() => { console.log('Excel file exported'); }) .catch((error) => { console.error('Error exporting Excel file:', error); }) .finally(() => { // 关闭数据库连接 connection.end(); console.log('Disconnected from MySQL'); }); }); }); ``` 以下是文件中需要注意的几点: - 在 `connection` 对象的配置中,你需要替换 `localhost`、`root`、`password` 和 `database_name` 为你的 MySQL 连接信息。 - 在 `connection.query` 中,你需要替换 `table_name` 为你要导出数据的表名。 - 在 `workbook.xlsx.writeFile` 中,你需要替换 `export.xlsx` 为你想要导出Excel 文件的路径。 当你运行这段代码时,它会连接到 MySQL 数据库,并查询你指定的表中的数据。然后,它会将查询结果转换为 Excel 文件 (`export.xlsx`) 并保存到当前文件夹中。 希望这个示例可以帮助你理解如何使用 Node.js 将 MySQL 数据导出Excel 文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值