nodejs excel表导出

这里采用的是ejsExcel,实现在Node.js端导出excel,采用的是模板+数据的形式,定义好模板,往里面放数据,简单易行好维护,使用的是Nodejs的ejsExcel导出excel插件
采用这种方法导出需要先定义好要导出的表的模板,然后数据部分采用ejs格式来实现
https://github.com/sail-sail/ejsExcel

1.安装

npm install ejsexcel

2.加载ejsExcel库和fs库

var ejsExcel=require("./ejsExcel");
var fs=require("fs");

3.创建excel模板
循环数据结果集

<%for RBegin rs1,i in _data_%>
<%for REnd(1)%>

渲染数据

<%=rs1.id%>

4.从数据库读取数据后渲染到excel模板中

//获得Excel模板的buffer对象
var exlBuf=fs.readFileSync("./public/excelop/template/finance_d.xlsx");
var excelname="~"+y+m+d+hh+mm+ss+".xlsx";//数据源
var sql1="select*frombookingwherebookingnolike'"+key+"%'";
mysql.query(sql1,function(error,obj){
  if(error){console.log(error);returnfalse;}//用数据源(对象)data渲染Excel模板/
  ejsExcel.renderExcelCb(exlBuf,obj,function(exlBuf2){
    fs.writeFileSync("./public/excelop/temp/"+excelname,exlBuf2);
    res.send(excelname);
  });
});

官方模板
Excel表格中需要数据的单元格

<%=data[0].table_name%>

Nodejs服务器端代码

var ejsExcel = require("../ejsExcel");
var fs = require("fs");
//获得Excel模板的buffer对象
var exlBuf = fs.readFileSync("./template1.xlsx");

//数据源
var data = [{"table_name":"现金报表"}];

//用数据源(对象)data渲染Excel模板
ejsExcel.renderExcelCb(exlBuf, data, function(exlBuf2){
  fs.writeFileSync("./report1.xlsx", exlBuf2);
  console.log("生成report1.xlsx");
});

最后在服务器端返回生成的excel表路径到客户端就可以下载了
其他导出Excel方法可以参考
http://tommyhu.cn/nodejs-export-excel

你可能感兴趣的:(nodejs excel表导出)