一、背景
前端上传execl到后端,解析execl数据存储在数据库中。前端查询数组,后端查询数据库并组合好数据返回前端,前端生成execl
二、技术点介绍:
1.ejsExcel是一款国人开发的、在Node.js应用程序中使用我们预先设置好的Excel模板导出Excel表格的模板引擎
安装ejsExcel
npm install ejsexcel
ejsExcel语法:
Syntax | Description |
---|---|
data | data 为内置对象, 数据源 |
<%forRow | 循环一行 |
<%# | 输出动态公式 |
<%~ | 输出数字类型格式 |
<%= | 输出字符串 |
<%forCell | 循环单元格 |
<%forRBegin | 循环多行 |
<%forCBegin | 循环多个单元格 |
<%hideSheet()%> | 隐藏所在工作表 |
<%showSheet()%> | 显示所在工作表 |
<%deleteSheet()%> | 删除所在工作表 |
<% %> | 内部可执行 任意 javascript,可以用 <%console.log(data)%> 打印临时变量到控制台,进行调试 |
2.util 是一个Node.js 核心模块,提供常用函数的集合,用于弥补核心JavaScript 的功能 过于精简的不足。
安装util
npm install util
三、实现
1.设置Excel模板
例如:
2.获取到后台返回的数据
const ejsexcel = require("ejsexcel");
const fs = require("fs");
const util = require("util");
const readFileAsync = util.promisify(fs.readFile);
const writeFileAsync = util.promisify(fs.writeFile);
const utils = require('../utils/utils.js')
exports.getList = async function(req, res) {
let data = req._parsedOriginalUrl.search;
utils.ajaxGet(data, 后台url).then(async function(datas) {
//获得Excel模板的buffer对象
const _data = JSON.parse(datas)
const data = _data.data.items;
const exlBuf = await readFileAsync("./excel/down.xlsx");
//用数据源(对象)data渲染Excel模板
const exlBuf2 = await ejsexcel.renderExcel(exlBuf, data);
res.send({
code: 10000,
data: {
data: exlBuf2
}
})
});
}