继续使用nodejs,壮哉我大前端~哈哈
这里用到nodejs的xlsx模块,在github上很火哟~
var xlsx = require('xlsx');
var workbook = xlsx.readFile('callLog.xlsx');

// 获取 Excel 中所有表名
var sheetNames = workbook.SheetNames;
// 根据表名获取对应某张表
var worksheet = workbook.Sheets[sheetNames[0]];
// 存放分解开的小时、分钟、秒
var hour = [];
var minute = [];
var second = [];


//将excel表格中的数据转换成json数据
function toJson(workbook) {
  var result = {};
  workbook.SheetNames.forEach(function(sheetName) {
    var value = xlsx.utils.sheet_to_row_object_array(workbook.Sheets[sheetName]);
    if(value.length > 0){
      result[sheetName] = value;
    }
  });
  return result;
}

//对时间的处理,将时间数字从字符串中分离开,进行计算
function timeFormat(time) {
	if(time.indexOf('小时') == -1) {
		hour.push(0);
	} else {
		hour.push(parseInt(time.split('小时')[0]));
		time = time.split('小时')[1];
	}
	if(time.indexOf('分') == -1) {
		minute.push(0);
	} else {
		minute.push(parseInt(time.split('分')[0]));
		time = time.split('分')[1];
	}
	if(time.indexOf('秒') == -1) {
		second.push(0);
	} else {
		time = time.replace('秒', '');
		second.push(time);
	}
}

// 将时长进行相加
function allTime(toArr, timeArr) {
    var res = 0;
    var carry = 0; //进位数
    var residue = 0; //满60进位后,剩余的数字

    if(toArr == null) {
        return (function() {
	    for(var i=0 ; i<timeArr.length ; i++) {
	        res += parseInt(timeArr[i]);
	    }
	    return res;
	})();

    } else {
	return (function() {

	    for(var j=0 ; j<timeArr.length ; j++) {
	        res += parseInt(timeArr[j]);
	    }
	    if(res >= 60) {  //这里解决进位的问题
		carry = parseInt(res/60);
		toArr.push(carry);
		residue = parseInt(res%60);
		return residue;
	    } else {
		return res;
	    }
	})();
    }
}

//对个位数字进行补‘0’操作
function shiftZero(time) {
    if(time/10 < 1) {
        time = '0' + time;
    }
    return time;
}

// 拿到json对象组成的数组
var jsonArr = toJson(workbook).Sheet1;
// 将数组中的‘通讯时长’初始化存放数组
var timesArr = [];   

for(var i=0 ; i<jsonArr.length ; i++) {
    timesArr.push(jsonArr[i]['通信时长']);
}

for(var j=0 ; j<timesArr.lengt敏感词imeFormat(timesArr[j]);
}


var allSec = allTime(minute, second);
var allMins = allTime(hour,minute);
var allHour = allTime(null, hour);

console.log(jsonArr);
console.log('-------------通信时长----------------');
console.log(timesArr);
console.log('-------------总时长----------------');
console.log(allHour + '小时' + shiftZero(allMins) + '分钟' + shiftZero(allSec) + '秒');
这里将从移动营业厅生成的excel表格信息简化一下,只留下有用的时长信息:

代码结果:

代码目录结构:

不知道代码是否适合所有形式的数据,尽量做了些格式化处理,暂时测试数据是可以的,如果有bug,欢迎指出,一起学习进步喽,哈哈~~