nodejs导出Excel文档

node中导出Excel文档。

  1. 安装excel-export
    node中导出excel的模板有很多,这里我使用的是excel-export来进行的导出功能的实现。
    新建一个node项目之后,在目录中找到package.json文件件,在dependencies:{}中添加 “excel-export”: "^0.5.1"记得在上一个之后加上‘,’逗号。
    在这里插入图片描述
    然后在package.json文件中鼠标右键,选中Run ‘npm’ install进行安装,也可以使用命令安装,两者结果都是一样的
    在这里插入图片描述
  2. 创建一个到处的路由js文件例如DownloadExcl.js,然后就可以开始进行以下代码了
var nodeExcel = require("excel-export");//首先,引入excel模块:
var express = require('express');
var router = express.Router();
router.get('/downloadEnd',function (req,res) {
var conf ={};//创建一个写入格式map,其中cols(表头),rows(每一行的数据);
var cols =['学号','姓名','年龄','性别','出生年月','班级编号'];//手动创建表头中的内容
conf.cols =[];//在conf中添加cols

for(var i=0;i<cols.length;i++){
    var tits ={};//创建表头数据所对应的类型,其中包括 caption内容 type类型
    tits.caption = cols[i];//添加内容
    tits.type='string';//添加对应类型,这类型对应数据库中的类型,入number,data但一般导出的都是转换为string类型的
    conf.cols.push(tits);//将每一个表头加入cols中
}

model.queryStudent(sql,function(err,data){//执行数据操作
    if(err){
        //执行出错
    }else{
        var tows = ['id','name','age','sex','body','banji'];//创建一个和表头对应且名称与数据库字段对应数据,便于循环取出数据
        var datas =[];//用于承载数据库中的数据
        for(int i=o;i<data.length;i++){//循环数据库得到的数据,因为取出的数据格式为
                                                    //[{'id':2312,'name':'张三','age':'22','sex':'男','banji':'高三一班'},{…………},{…………}]
            var tow =[];//用来装载每次得到的数据
            for(int j=0;j<tows.length;j++){//内循环取出每个
                    tow.push(data[i][tows[j]].toString());//或者tow.push((data[i].tows[j]).toString());两种形式都是相同的
            }
            datas.push(tow);//将每一个{ }中的数据添加到承载中
        }
        conf.tows = datas;//将所有行加入tows中
        var result =nodeExcel.execute(conf);//将所有数据写入nodeExcel中
        res.setHaeder('Conten-Tyep', 'application/vnd.openxmmlformats:charset:s=utf-8');//设置响应头
        res.setHaeder('Conten-Disposition','attachment:filename="+encodeURLComponent("XXXXX")+".xlsx');//设置下载文件命名
        res.end(result,'binary');//将文件内容传入
         
    }
});
});
module.exports = router;

创建完成以后在HTML界面中使用ajax调用或者直接使用a便签进行下载。
代码中调用SQL模块的没有贴出来,因为主要说的是导出,SQL调用就不说了,所以下载成功的截图我是以自己实际项目截图的,

在这里插入图片描述
在这里插入图片描述

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 文件。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值