背景因为Team本身的工作性质,平时都是值班的。值班数据可以导出为本地Excel文件。之后还要用Excel分析结果数据,做图表,写周报发给老板。像我这种连word都不会玩的人,更不用说使用Excel中强大的公式来分析数据了?轮到我值班的时候,我用nodejs写了一个脚本自动处理Excel中的数据,然后将数据写入到Excel文件中。后来分享给同事,得到了老板的表扬。我自信满满?随手写的,只是为了工作需要。正好国庆有空按照CMD规范重写了下。然后分享给大家。该脚本的目的是读取一个Excel文件,分析Excel中的数据,并将结果写入Excel。本过程中使用的第三方包使用了两个第三方包,如下:require('date-utils');varxlsx=require('node-xlsx');usingdate-utils主要是用来做一些时间处理的。比如时差,当前时间加上日期向后七天。这个包非常强大。可以看API:具体API详细文档请参考这里:点此一起阅读以上两篇文档。这些方法扩展了Date对象,后面的方法用于对象实例。示例代码如下://当前日期是7天后vartime='2016-10-0414:30:24'varnextSevenDay=(newDate(time)).add({'day':7});//比较时间差vartemp=Date.compare(time1,time2);//得到的数字值node-xlsx主要做了一些excel相关的处理,比如读取Excel文件:varworkExcel=xlsx.parse('xxx.xls');例如创建一个excel文件对象:varbuffer=xlsx.build([{name:name,data:datalist}]);如果对CMD规范不熟悉,可以参考我脚本的目录结构如下:如果对package.json文件配置不是很熟悉,可以参考这里的主要代码分析:excel文件通过node-xlsx读取的是一个json数据。我们都应该知道,一个Excel文件可以包含多个表格,每个表格可以管理自己的数据。根据上面已知的内容,代码如下://读取一个excel文件varchatExcel=xlsx.parse('./History.xls');//获取需要excel的表格中的数据vartableData=excelFunc.getDataContent('history',chatExcel);//获取当前表格的第一行数据,通常在excel中这一行就是标题vartableTitle=tableData[0];在使用nodejs的过程中最大可能的一个困惑就是exports和module.exports的区别。它们的主要区别如下:1.简单代码示例:一个test1.js文件,代码如下:module.exports="test";exports.fileName=function(){console.log('test1');};如何在test2.js文件中使用test1.js模块:vartest1=require('test1');test1.fileName();//类型错误:对象测试!hasnomethod'fileName'2.如果module是类比如consoleName.js文件,代码如下:module.exports=function(name){this.name=name;this.consoleName=function(){控制台.log(this.name);}}在其他模块中调用模块的方法:varConsoleName=require('consoleName');varcon=newConsoleName('志强');con.consoleName();//志强3.如果module是一个数组,比如有一个test1.js文件,里面的代码如下:module.exports=['zhiqiang1','houzhiqiang'];其他模块中的调用方法vararr=require('test1')console.log(arr[1])//houzhiqiang其他代码没什么别的不说,都是公式的存储和计算。有兴趣的可以访问源码看看。源地址