一、excel-export模块
官方介绍:https://www.npmjs.com/package/excel-export
生成的表格为xlsx格式,支持多个sheet。本文只介绍一个sheet表的生成。
二、实例
1. 在package.json中引入excel-export模块,使用npm install 命令安装
2. 在js文件中写入var nodeExcel = require('excel-export'); 才可以使用该模块
3. 如果表格内容固定,在js文件中写入如下语句(来自官方文档,有删减)即可实现访问 localhost:port/Excel 时自动下载xlsx格式的表格
app.get('/Excel', function(req, res){
var conf ={};
conf.name = "mysheet";
conf.cols = [{
caption:'string',
type:'string',
},{
caption:'date',
type:'date',
},{
caption:'bool',
type:'bool'
},{
caption:'number',
type:'number'
}];
conf.rows = [
['pi', new Date(Date.UTC(2013, 4, 1)), true, 3.14],
["e", new Date(2012, 4, 1), false, 2.7182],
["M&M<>'", new Date(Date.UTC(2013, 6, 9)), false, 1.61803],
["null date", null, true, 1.414]
];
var result = nodeExcel.execute(conf);
res.setHeader('Content-Type', 'application/vnd.openxmlformats');
res.setHeader("Content-Disposition", "attachment; filename=" + "Report.xlsx");
res.end(result, 'binary');
});
conf相当于单个sheet, conf.name为表名,conf.cols中存放了表头的内容,conf.rows中存放了主体内容。最后四行代码将定义的表写入response中,实现excel表的下载功能。
4. 使xlsx内容支持中文
注意res.setHeader这两行代码,Content-Type和Content-Disposition决定了访问该路由时获取的是要下载的内容。
在Content-Type中加入编码格式为utf-8即可实现文件内容支持中文
res.setHeader('Content-Type', 'application/vnd.openxmlformats;charset=utf-8');
5. 使xlsx标题支持中文
在 Content-Disposition 中有filename,定义了文件名。中文文件名可以通过编码转化写入到header中。
var name = encodeURI('测试表');
res.setHeader("Content-Disposition", "attachment; filename=" + name + ".xlsx");
(注:使用同样的方法命名sheet就失效了,如果有将sheet命名为中文的方法欢迎告知)
6. 表头写入变量内容
必须先将conf.cols声明为数组才能使用循环语句将数据写入表头。
conf.cols = [];
var test = ['序号', '学号', '姓名', '专业'];
for(var i=0; i
7. 表写入二维数组变量内容。
假设从数据库中取出内容为data,属性包括id, name, profession并写入到表中
var array = new Array();
for(var i=0; i