用js处理打卡记录excel表
2016-09-23 17:05
176 查看
首张图片是待处理的excel表,文章最后是处理结果,如果您是要这种效果,中间内容不妨看一下。
不需要数据库,不需要服务,只要一个excel一个谷歌浏览器,搞定这些。
因为js没有上传excel表的功能,我们简单处理下excel表,把内容粘贴出来,把一切作为字符串来处理。
首先,处理下excel表中的数据,每一行行首和行尾,用英文中括号‘[]’括起来,如下,很简单,加两列,用公式计算一下第一行的单元格,下拉搞定所有。
==========================================================================================================================
其次,复制前两列,粘贴到http://tool.oschina.net/codeformat/html,格式化一下字符串,此步骤可以省略,如下:
==========================================================================================================================
将字符串记为str,打卡合格次数记为times,执行orderList(str,times)函数。
==========================================================================================================================
把如下代码粘贴到浏览器的console中:
str = ' [李白 2016-01-20,5:30-20:30] [王白 2016-01-20,5:30-20:31] [金白 2016-01-20,5:30-20:32] [王白 2016-01-20,5:30-20:33] [李白 2016-01-20,5:30-20:34] [金白 2016-01-20,5:30-20:35] [金白 2016-01-20,5:30-20:36] [赵白 2016-01-20,5:30-20:37] [郝白 2016-01-20,5:30-20:38] [郝白
2016-01-20,5:30-20:39] [郝白 2016-01-20,5:30-20:40] [王白 2016-01-20,5:30-20:41] [赵白 2016-01-20,5:30-20:42] [王白 2016-01-20,5:30-20:43] [郝白 2016-01-20,5:30-20:44] [王白 2016-01-20,5:30-20:45] [王白 2016-01-20,5:30-20:46] ',
times = 4,
//Merge rows
function orderList(str,times){
namelist = [];
str.match(/\[[^\]]+\]/g).map(function(item,index,array){
return item.replace(/[^\u4e00-\u9fa5]/gi,"");
}).sort().reduce(function(prev,cur,index,array){
if(prev.indexOf(cur)<0 || index==1){
namelist.push(cur);
}
return prev+cur;
});
return namelist.map(function(item,index,array){
var order = str.match(/\[[^\]]+\]/g).join().match(new RegExp('\\['+item.toString()+'[^\\]]+\\]','g'));
var l = 0;
if(order && order!=null && order != '')
l = order.length;
if(l<times)
return '姓名:'+item + ',共计:' + l + ',明细:' + order;
else
return '姓名:'+item + ':ok!';
}).sort(function(v1,v2){
var p = /ok!/g;
if(p.test(v1) && p.test(v2))
return 0;
else if(p.test(v1) && !p.test(v2))
return 1;
else
return -1;
}).join('\n');
}(str,times)
代码的详细介绍参考另一篇文章:http://blog.csdn.net/june_ruikang/article/details/52640823,可从同类文章中查找
=======================================================================================================================
点击回车,执行后结果如下:
"姓名:李白,共计:2,明细:[李白 2016-01-20,5:30-20:30],[李白 2016-01-20,5:30-20:34]
姓名:赵白,共计:2,明细:[赵白 2016-01-20,5:30-20:37],[赵白 2016-01-20,5:30-20:42]
姓名:金白,共计:3,明细:[金白 2016-01-20,5:30-20:32],[金白 2016-01-20,5:30-20:35],[金白 2016-01-20,5:30-20:36]
姓名:郝白:ok!
姓名:王白:ok!"
不需要数据库,不需要服务,只要一个excel一个谷歌浏览器,搞定这些。
因为js没有上传excel表的功能,我们简单处理下excel表,把内容粘贴出来,把一切作为字符串来处理。
首先,处理下excel表中的数据,每一行行首和行尾,用英文中括号‘[]’括起来,如下,很简单,加两列,用公式计算一下第一行的单元格,下拉搞定所有。
==========================================================================================================================
其次,复制前两列,粘贴到http://tool.oschina.net/codeformat/html,格式化一下字符串,此步骤可以省略,如下:
==========================================================================================================================
将字符串记为str,打卡合格次数记为times,执行orderList(str,times)函数。
==========================================================================================================================
把如下代码粘贴到浏览器的console中:
str = ' [李白 2016-01-20,5:30-20:30] [王白 2016-01-20,5:30-20:31] [金白 2016-01-20,5:30-20:32] [王白 2016-01-20,5:30-20:33] [李白 2016-01-20,5:30-20:34] [金白 2016-01-20,5:30-20:35] [金白 2016-01-20,5:30-20:36] [赵白 2016-01-20,5:30-20:37] [郝白 2016-01-20,5:30-20:38] [郝白
2016-01-20,5:30-20:39] [郝白 2016-01-20,5:30-20:40] [王白 2016-01-20,5:30-20:41] [赵白 2016-01-20,5:30-20:42] [王白 2016-01-20,5:30-20:43] [郝白 2016-01-20,5:30-20:44] [王白 2016-01-20,5:30-20:45] [王白 2016-01-20,5:30-20:46] ',
times = 4,
//Merge rows
function orderList(str,times){
namelist = [];
str.match(/\[[^\]]+\]/g).map(function(item,index,array){
return item.replace(/[^\u4e00-\u9fa5]/gi,"");
}).sort().reduce(function(prev,cur,index,array){
if(prev.indexOf(cur)<0 || index==1){
namelist.push(cur);
}
return prev+cur;
});
return namelist.map(function(item,index,array){
var order = str.match(/\[[^\]]+\]/g).join().match(new RegExp('\\['+item.toString()+'[^\\]]+\\]','g'));
var l = 0;
if(order && order!=null && order != '')
l = order.length;
if(l<times)
return '姓名:'+item + ',共计:' + l + ',明细:' + order;
else
return '姓名:'+item + ':ok!';
}).sort(function(v1,v2){
var p = /ok!/g;
if(p.test(v1) && p.test(v2))
return 0;
else if(p.test(v1) && !p.test(v2))
return 1;
else
return -1;
}).join('\n');
}(str,times)
代码的详细介绍参考另一篇文章:http://blog.csdn.net/june_ruikang/article/details/52640823,可从同类文章中查找
=======================================================================================================================
点击回车,执行后结果如下:
"姓名:李白,共计:2,明细:[李白 2016-01-20,5:30-20:30],[李白 2016-01-20,5:30-20:34]
姓名:赵白,共计:2,明细:[赵白 2016-01-20,5:30-20:37],[赵白 2016-01-20,5:30-20:42]
姓名:金白,共计:3,明细:[金白 2016-01-20,5:30-20:32],[金白 2016-01-20,5:30-20:35],[金白 2016-01-20,5:30-20:36]
姓名:郝白:ok!
姓名:王白:ok!"
相关文章推荐
- [学习记录]js处理json的list对象
- jquery中ajax如何返回值到上层函数的方法以及对于js处理json对象方法的记录
- 处理考勤打卡记录问题(200分题目)
- js的数据处理记录
- js处理中文乱码记录/nodejs+express error 413
- js 处理json数据记录
- js--打卡--12.25 DOM添加删除记录练习
- javascript将DOM事件处理程序封装为event.js 出现的低级错误记录
- JS关闭浏览器记录离开时间,刷新不作处理
- js处理数据的方式记录
- 在ASP中处理数据库的NULL记录
- C#向Sql Server中插入记录时单引号的处理
- 版务处理记录
- 页面中的图片超过规定的大小就按原图片大小缩小,不超过的就按原样的JS处理方案
- 共享一个JS分页处理的类(3)
- DotNetNuke Skinning Whitepaper 翻译记录(页面处理部分)
- 页面中的图片超过规定的大小就按原图片大小缩小,不超过的就按原样的JS处理方案 选择自 WeekZero 的 Blog
- 使用Application_Error事件处理程序把异常记录到系统事件日志
- [导入]C#向Sql Server中插入记录时单引号的处理
- 页面中的图片超过规定的大小就按原图片大小缩小,不超过的就按原样的JS处理方案