前言
百度了一下,node后台大部分都是通过node-xlsx
来导出excel的。后来又发现了一个ejsexcel
,星虽然不多,但是操作起来挺简单的
node-xlsx
如果导出的excel结构比较简单的话可以使用node-xlsx
,官方文档也给出了例子。如果涉及单元格合并的话要仔细研究一下文档。下面简单介绍一下如何导出一个简单的excel
安装
npm install node-xlsx --save
示例:导出一个简单的excel
1、先建一个模板文件a.xlsx
,如下图
//加载node-xlsx
let xlsx = require("node-xlsx");
//加载文件模块
let fs = require("fs");
//读取并解析excel模板
let workSheet = xlsx.parse("./a.xlsx");
//输出一下
console.log("模板:", workSheet);
//要导出的数据,必须是数组格式,一行数据是一个数组
let data = [
[1, "秦一", 15],
[2, "王二", 18],
[3, "张三", 20],
[4, "李四", 32],
];
//定义列宽,使用默认列宽,可以忽略
let sheetOptions = { "!cols": [{ wch: 10 }, { wch: 50 }, { wch: 20 }] };
//生成buffer
let buffer = xlsx.build([{ name: "用户", data: data }], { sheetOptions });
//导出
fs.writeFileSync("./用户.xlsx", buffer, { flag: "w" });
执行
结果
ejsexcel
如果是格式比较复杂的excel表,可以使用ejsexcel
安装
npm install ejsexcel --save
语法
如果了解jsp
、ejs
上手起来还是很容易的
示例
1、创建一个模板
//加载ejsexcel
const ejsexcel = require("ejsexcel");
//加载fs
const fs = require("fs");
//读取模板
const exlBuf = fs.readFileSync("./a.xlsx");
//导出的数据
const data = [
{
id:1,
name:'张三',
age:15,
time:new Date()
},
];
//导出
ejsexcel
.renderExcel(exlBuf, data)
.then((exlBuf2) => {
fs.writeFileSync("./课程.xlsx", exlBuf2);
})
.catch((err) => {
console.log("导出失败:", err);
});
结果
注意: 数据源 data
要写成 _data_
循环多行
示例1:
模板:
数据
const data = [
{
name: "张三",
},
{
name: "李四",
},
{
name: "王五",
},
];
结果:
注意:
- 必须有一个开始和结束标签,要循环的内容要放在两个标签之间
循环单元格
模板:
数据:
const data = [
{
name: "张三",
},
{
name: "李四",
},
{
name: "王五",
},
];
结果:
备注:看模板,代码必须写在一个单元格里,不然会出问题了,这个测试了好几次才成功
循环多个单元格
同循环多行,一定要有开始和结束