使用node把mysql表导出为excel表格

安装
npm i mysql
npm i node-xlsx
npm i fs
const mysql = require('mysql');
const xlsx = require('node-xlsx');
const fs = require('fs');
const db = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: '数据库密码',
  database: '数据库名',
  port: 3306
});
let data = [];
//excel表头部分
data.push([
  'id',
  'user',
  'passworld'
])
db.connect();
db.query('SELECT * from user', (err, result) =>{
  if (rows) {
    for (var i = 0; i < result.length; i++) {
      var arr = [];
      var value = result[i];
      for (var j in value) {
        arr.push(value[j]);
      }
      data.push(arr);
    }
  }
  var buffer = xlsx.build([
    {
      name: 'sheet1',
      data: data
    }
  ]);
  fs.writeFileSync('C:/Users/86152/Desktop/data.xlsx', buffer, { 'flag': 'w' });
                    这里的路径是桌面,导出的excel会在桌面上,路径根据需要修改
});
db.end();

 如果用接口调用打印特别注意,断开接口,否则重复调用接口会报错 “Cannot enqueue Handshake after already enqueuing a Handshake.”

const express = require('express')
const mysql = require('mysql');
const xlsx = require('node-xlsx');
const fs = require('fs');
const app = express()
const db = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: '数据库密码',
  database: '数据库名',
  port: 3306
});
app.get("/", (req, res) => {

  let data = [];
  //excel表头部分
  data.push([
    'id',
    'user',
    'passworld'
  ])
  db.query('SELECT * from user', (err, result) => {
    if (result) {
      for (var i = 0; i < result.length; i++) {
        var arr = [];
        var value = result[i];
        for (var j in value) {
          arr.push(value[j]);
        }
        data.push(arr);
      }
    }

    var buffer = xlsx.build([
      {
        name: 'sheet1',
        data: data
      }
    ]);
    fs.writeFileSync('C:/Users/86152/Desktop/data.xlsx', buffer, { 'flag': 'w' });
    res.send(result)
  });

})
app.listen(3300, () => {
  console.log("启动成功");
  db.connect()
  此位置断开,如果不断开重复调用接口会报错
})

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值