教師改好學(xué)生的成績之后可以開始統(tǒng)計(jì)學(xué)生的表格
前言
- 網(wǎng)上查看nodejs下導(dǎo)出excel表格大多兩種方法:node-xlsx和excel-export,我采用的是excel-export方法珍特。
excel-export使用方法
- 首先是安裝excel-export
npm install excel-export
- 安裝好之后就可以在index.js里面使用
- 首先需要從數(shù)據(jù)庫中獲取學(xué)生的學(xué)號(hào)隧饼,姓名二蓝,成績等信息咪惠,將其存入數(shù)組中来屠,并通過回掉函數(shù)傳到路由那邊進(jìn)行處理
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進(jìn)行處理
conf.cols 表示表格每一列應(yīng)該是什么內(nèi)容承二,caption用來設(shè)置首行各單元格內(nèi)容榆鼠,type設(shè)置的是每一列的數(shù)據(jù)類型,
conf.cols = [{
caption:'學(xué)號(hào)',
type:'string',
},
{
caption:'姓名',
type:'string'
}, {
caption:'成績',
type:'string'
}];
將從數(shù)據(jù)庫獲取到的信息放到每一行中,rows 賦值的是每一行的數(shù)據(jù)亥鸠,每個(gè)數(shù)據(jù)都要與所在列所設(shè)置的數(shù)據(jù)格式一致妆够,否則會(huì)報(bào)錯(cuò),生成后的表格該單元格會(huì)顯示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;
設(shè)置導(dǎo)出表格的文件名并導(dǎo)出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);
}
});
參考網(wǎng)址: