背景
由于 Team 自身事情性质的题目,日常平凡须要值班。值班数据能够导出为当地的Excel文件。以后须要对Excel中的效果数据做剖析,而且制造图表写周报发给老大。
关于我这类对word都玩不转的人,别说用Excel中壮大的公式剖析数据了?。轮到我值班的时刻就用nodejs写了一个剧本自动处置惩罚Excel中的数据,而且将数据再写入Excel文件。厥后分享给同事,得到了老大的夸耀,自信心爆棚 ?
之前仅仅为了满足事情的须要写的比较的随意,恰好国庆有时候根据CMD范例重写一下。然后分享给人人。
剧本目标
读取Excel文件,剖析Excel中的数据,而且将效果写入Excel中。
运用的第三方包
在这个历程当中运用了两个第三方的包离别以下:
require('date-utils');
var xlsx = require('node-xlsx');
运用date-utils
主假如用来做一些时候上的处置惩罚。比方说时候差,当前时候向后加七天的日期。这个包异常的壮大。能够看下API:
上面的两片文档能够结合著看。
<static>
这些要领扩大的是Date对象,然后面的这些要领这些用于对象的实例。实例代码以下:
//当前日期推后7天的日期
var time = '2016-10-04 14:30:24'
var nextSevenDay = (new Date(time)).add({'day':7});
//比较时候差
var temp = Date.compare(time1,time2); //效果位数值
node-xlsx
重要做一些excel相干的处置惩罚
比方说读取Excel 文件:
var workExcel = xlsx.parse('xxx.xls');
比方建立excel文件对象:
var buffer = xlsx.build([{name: name, data: datalist}]);
cmd范例相干内容
假如对CMD范例不熟悉的话能够参考这里
我的剧本的目次构造以下:
假如对package.json
文件设置不是很熟悉的话能够参考这里
重要代码剖析:
经由过程node-xlsx
读取的excel文件就是一个json数据。我们应当都晓得一个Excel文件能够包括多张表,每张表都能够治理本身的数据。
看照上面已知内容,代码以下:
//读取某个excel文件
var chatExcel = xlsx.parse('./历史记录.xls');
//猎取须要excel某个表中的数据
var tableData = excelFunc.getDataContent('历史记录', chatExcel);
//猎取当前表中猎取第一行数据,通常在excel中这一行就是每一列的title
var tableTitle = tableData[0];
在运用nodejs的历程当中能够最大的一个疑惑就是区分exports
和module.exports
吧,它们二者的重要区分以下:
1. 简朴的代码示例:
一个test1.js文件,个中代码以下:
module.exports="test";
exports.fileName = function(){
console.log('test1');
};
在test2.js文件中运用test1.js模块的要领:
var test1 = require('test1');
test1.fileName(); //TypeError: Object test! has no method 'fileName'
2. 假如模块是一个类若有一个consoleName.js的文件,个中代码以下:
module.exports=function(name){
this.name =name;
this.consoleName = function(){
console.log(this.name);
}
}
别的模块中的挪用模块的要领:
var ConsoleName = require('consoleName');
var con = new ConsoleName('zhiqiang');
con.consoleName(); //zhiqiang
3. 假如模块是一个数组,例若有一个test1.js的文件,个中的代码以下:
module.exports =['zhiqiang1','houzhiqiang'];
在别的模块的挪用要领
var arr =require('test1')
console.log(arr[1]) //houzhiqiang
别的的代码就没有什么别的了,都是关于公式的存盘算的题目。假若有兴致的同砚能够接见源码看一下。源码地点