node.js学习笔记(5)——excel-export模块导出excel表

一、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

 

你可能感兴趣的:(node.js)