教师改好学生的成绩之后可以开始统计学生的表格
前言
- 网上查看nodejs下导出excel表格大多两种方法:node-xlsx和excel-export,我采用的是excel-export方法。
excel-export使用方法
- 首先是安装excel-export
npm install excel-export
- 安装好之后就可以在index.js里面使用
- 首先需要从数据库中获取学生的学号,姓名,成绩等信息,将其存入数组中,并通过回掉函数传到路由那边进行处理
exports.exportExcel = function(data,cb) {
Student.find({})
.exec(function (err,doc) {
for(var i = 0;i < doc.length; i++) {
questionList.push(doc[i].toObject());
}
cb(true,questionList);
});
}
- 接着是在index.js进行处理
conf.cols 表示表格每一列应该是什么内容,caption用来设置首行各单元格内容,type设置的是每一列的数据类型,
conf.cols = [{
caption:'学号',
type:'string',
},
{
caption:'姓名',
type:'string'
}, {
caption:'成绩',
type:'string'
}];
将从数据库获取到的信息放到每一行中,rows 赋值的是每一行的数据,每个数据都要与所在列所设置的数据格式一致,否则会报错,生成后的表格该单元格会显示NaN。
for(var i=0; i<data.length;i++) {
var buffer = [data[i].stuId, data[i].stuName, data[i].grade];
console.log(buffer);
temp.push(buffer);
}
conf.rows=temp;
设置导出表格的文件名并导出excel表格
var result = nodeExcel.execute(conf);
var random = Math.floor(Math.random()*10000+0);//用来保证生成不同的文件名
var uploadDir = './public/upload/';
var filePath = uploadDir + filename + random + ".xlsx"; //文件名
fs.writeFile(filePath, result, 'binary',function(err){
if(err){
console.log(err);
}
});
参考网址: