NodeJS excel 导出(exceljs)

exceljs : https://github.com/guyonroche/exceljs

1、先来个导入
excel
![这里写图片描述](https://img-blog.csdn.net/20170731105940068?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjQwNzg4NDM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

解析方法

var Excel = require('exceljs');

var workbook = new Excel.Workbook();
var data = [];
workbook.xlsx.readFile('import.xlsx')
	.then(function(){
	var worksheet = workbook.getWorksheet(1);
	var row = worksheet.getRow(2);
	row.eachCell(function(cell, colNumber){
		var value = cell.value;
		if(typeof value == "object") value = value.text;
		data.push(value);
		//console.log('Cell ' + colNumber + ' = ' + JSON.stringify(cell.value.text));	
	});
	//console.log(worksheet.getRow(2));
	console.log(JSON.stringify(data));
});

测试结果

["易窗","天道绝","神王一段","太一神剑","龙麒麟"]

2、导出

导出效果

这里写图片描述

导出方法

/**
 * Created by alex on 17-2-23.
 */
var Excel = require('exceljs');

//cell style
var fills = {
    solid: {type: "pattern", pattern:"solid", fgColor:{argb:"FFFFAAAA"}}
};

//create a workbook
var workbook = new Excel.Workbook();

//add header
var ws1 = workbook.addWorksheet("测试一");
ws1.addRow(["地址","地面"]);
ws1.addRow(["总人口", "不可计数"]);
ws1.addRow(["类型", "动物", "非动物"]);
ws1.addRow(["统计日期", "1111-11-11 11:11:11"]);
ws1.addRow();

//A6:E6
ws1.addRow(["你", "在", "说些", "神马", "呢?"]);
ws1.getCell("A6").fill = fills.solid;
ws1.getCell("B6").fill = fills.solid;
ws1.getCell("C6").fill = fills.solid;
ws1.getCell("D6").fill = fills.solid;
ws1.getCell("E6").fill = fills.solid;

//7 - 13(A7:A13) - 7
ws1.addRow(["什么跟神马", 10, 1, "凡人修仙传", 7]);
ws1.addRow(["","","","一号遗迹", 2]);
ws1.addRow(["","","","六号遗迹", 0]);
ws1.addRow(["","","","古国一号", 0]);
ws1.addRow(["","","","锻体期", 0]);
ws1.addRow(["","","","合体期", 0]);
ws1.addRow(["","","","没资质", 1]);


ws1.mergeCells("A7:A13")
ws1.mergeCells("B7:B13")
ws1.mergeCells("C7:C13")

//a6-e13 a b c d e
//ws1.getCell('A7').alignment = { vertical: 'middle', horizontal: 'center' };

rowCenter(ws1, 6, 13); 
colWidth(ws1, [1,2,3,4,5], 20);

var ws2 = workbook.addWorksheet("测试二");


var ws3 = workbook.addWorksheet("测试三");

//设置 start-end 行单元格水平垂直居中/添加边框
function rowCenter(arg_ws, arg_start, arg_end) {
    for(i = arg_start; i <= arg_end; i++) {
        arg_ws.findRow(i).alignment = { vertical: 'middle', horizontal: 'center' };
        //循环 row 中的 cell,给每个 cell添加边框
        arg_ws.findRow(i).eachCell(function (cell, index) {
            cell.border = {
                top: {style:'thin'},
                left: {style:'thin'},
                bottom: {style:'thin'},
                right: {style:'thin'}
            };
        })

    }
}

//设置 start-end 列的宽度
function colWidth(arg_ws, arg_cols, arg_width) {
    for(i in arg_cols) {
        arg_ws.getColumn(arg_cols[i]).width = arg_width;
    }
}

//
workbook.xlsx.writeFile('test2.xlsx')
    .then(function(){
        console.log('生成 xlsx');
    });

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
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 文件。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值