2019-03-15 16:34:19
生成报表并下载是作为web应用的一个传统功能,在nodejs中,很多开发人员也提供了很多的依赖来实现这一功能。
这里我们主要介绍一下excel-export的应用。
npm install excel-export
nodejs使用的框架是express,koa框架也类似。
const express = require('express');
const router = express.Router();
router.get('/exportExcel/:id', function(req, res, next) {
let conf ={};
let fileName = "下载文件名";
conf.name = "mysheet";//这里标识在excel底部的表名
conf.cols = [{
caption:'字符串',
type:'string',
beforeCellWrite:function(row, cellData){
return cellData;//这里可对数据进行格式化处理,如无需处理可直接不写即可
},
width:28.7109375
},{
caption:'日期',
type:'date',
beforeCellWrite:function(){
var originDate = new Date(Date.UTC(1899,11,30));
return function(row, cellData, eOpt){
if (eOpt.rowNum%2){
eOpt.styleIndex = 1;
}
else{
eOpt.styleIndex = 2;
}
if (cellData === null){
eOpt.cellType = 'string';
return 'N/A';
} else
return (cellData - originDate) / (24 * 60 * 60 * 1000);
}
}()
},{
caption:'布尔值',
type:'bool'
},{
caption:'数值',
type:'number'
}];
conf.rows = [
['one', new Date(Date.UTC(2013, 4, 1)), true, 3.14],
["two", new Date(2012, 4, 1), false, 2.7182],
["oecom", new Date(Date.UTC(2013, 6, 9)), false, 1.61803],
["网站", null, true, 1.414]
];
let result = nodeExcel.execute(conf);
res.setHeader('Content-Type', 'application/vnd.openxmlformats;charset=utf-8');
res.setHeader("Content-Disposition", "attachment; filename=" + encodeURIComponent(fileName)+".xlsx");//中文名需要进行url转码
res.setTimeout(30 * 60 * 1000)//防止网络原因造成超时。
res.end(result, 'binary');
});
excel-export 提供了4种类型的数据格式:数值类型,时间类型,bool,字符串(默认值)。 通过上面的代码我们可以看出,一个表格其实就是一个json值。cols属性定义列,填入了列名、类型、宽度,还提供了填入前对数据的处理函数。 rows为一个二位数组,直接按照行列方式填充excel的内容 name定义sheet的名字,可以自定义,如不填,最采用系统默认的。
有时我们一个excel表格内包含多个表,这时我们只需要对上述代码进行稍微的改变即可。
let conf1 ={};
let conf2 ={};
let conf3 ={};
let confs = [conf1,conf2,conf3];
let result = nodeExcel.execute(confs);
上面的代码示例我写了一个简易的代码,只是将每一个表格json对象存入数组,然后再通过nodeExcel.execute执行即可。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有