Node后台导出Excel

前言

百度了一下,node后台大部分都是通过node-xlsx来导出excel的。后来又发现了一个ejsexcel,星虽然不多,但是操作起来挺简单的

node-xlsx

如果导出的excel结构比较简单的话可以使用node-xlsx,官方文档也给出了例子。如果涉及单元格合并的话要仔细研究一下文档。下面简单介绍一下如何导出一个简单的excel

node-xlsx官方文档

安装

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

语法
在这里插入图片描述
如果了解jspejs 上手起来还是很容易的

示例
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: "王五",
  },
];

结果:
在这里插入图片描述
备注:看模板,代码必须写在一个单元格里,不然会出问题了,这个测试了好几次才成功

循环多个单元格
同循环多行,一定要有开始和结束

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无知的小菜鸡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值