使用js将多个相关联的excel数据文件整合到一起并筛选出需要的数据的整理
2017-09-27 09:24
555 查看
最近,因为业务需要遇到一个整合筛选excel数据的项目。
两个excel文件,一个是按获奖人名整理的获奖数据(分老师和学生两种身份,获奖类型分一、二、三等奖),另一个是按报送学校整理的数据(学校类型分为高职和中职),报送的学校要比获奖的学校个数多,业务需求是按学校类型统计获奖学校的老师和学生每一个获奖类型的个数。
首先推荐一个把excel转为json的在线网站 http://www.bejson.com/json/col2json/
举例说明两个json数据:
var data= [ {"id":"1","school_name":"***学院","address":"北京","获奖用户姓名":"张三","level":"一等奖","type":"高职","zw":"老师"},
{"id":"2","school_name":"***学院","address":"北京","获奖用户姓名":"赵四","level":"二等奖","type":"高职","zw":"学生"}]
var s_all=[ {"id":"1","adress":"北京,"school_name":"***学院","type":"中职"},{"id":"2","adress":"北京,"school_name":"***学院","type":"高职"}]
1、创建两个数组分别存放老师和学生的数据
var info_list=[];
var info_student_list=[];
2、循环s_all
for( var j=0;j<s_all.length;j++) {
var info={"school_name":" ","address":" ","type":" ","teacher_one":"","teacher_two":"","teacher_three":"","teacher_four":" “};//按老师身份声明对象
var info_student={"school_name":"","address":" ","type":" ",student_one:" ",student_two:" ",student_three:" ",student_four:" "};//按学生身份申明对象
var school1=[];//存放筛选出的获奖学校
var school1_t=[];//存放获奖学校的老师数据
var school1_t_one=[];//存放获得一等奖的老师
var school1_t_two=[];
var school1_t_three=[];
var school1_t_four=[];
var school1_s=[];//存放获奖学校的学生数据
var school1_s_one=[];//存放获得一等奖的学生
var school1_s_two=[];
var school1_s_three=[];
var school1_s_four=[];
info.school_name = s_all[j].school_name;
info.address = s_all[j].adress;
info.type = s_all[j].type;
info_student.school_name = s_all[j].school_name;
info_student.address = s_all[j].adress;
info_student.type = s_all[j].type;
//筛选获奖学校
for (var i = 0; i < data.length; i++) {
if (data[i].school_name == s_all[j].school_name) {//筛选出获奖学校
school1.push(data[i]);
}
}
//老师
for (var i = 0; i < school1.length; i++) {
if (school1[i].zw == "老师") {
school1_t.push(school1[i]);
}
}
for (var i = 0; i < school1_t.length; i++) {
if (school1_t[i].level == "一等奖") {
school1_t_one.push(school1_t[i]);
}
}
for (var i = 0; i < school1_t.length; i++) {
if (school1_t[i].level == "二等奖") {
school1_t_two.push(school1_t[i]);
}
}
for (var i = 0; i < school1_t.length; i++) {
if (school1_t[i].level == "三等奖") {
school1_t_three.push(school1_t[i]);
}
}
for (var i = 0; i < school1_t.length; i++) {
if (school1_t[i].level == "优秀奖") {
school1_t_four.push(school1_t[i]);
}
}
//学生
for (var i = 0; i < school1.length; i++) {
if (school1[i].zw == "学生") {
school1_s.push(school1[i]);
}
}
for (var i = 0; i < school1_s.length; i++) {
if (school1_s[i].level == "一等奖") {
school1_s_one.push(school1_t[i]);
}
}
for (var i = 0; i < school1_s.length; i++) {
if (school1_s[i].level == "二等奖") {
school1_s_two.push(school1_t[i]);
}
}
for (var i = 0; i < school1_s.length; i++) {
if (school1_s[i].level == "三等奖") {
school1_s_thre
a2a9
e.push(school1_t[i]);
}
}
for (var i = 0; i < school1_s.length; i++) {
if (school1_s[i].level == "优秀奖") {
school1_s_four.push(school1_t[i]);
}
}
//通过数组的长度得到获奖个数
info.teacher_one = school1_t_one.length;
info.teacher_two = school1_t_two.length;
info.teacher_three = school1_t_three.length;
info.teacher_four = school1_t_four.length;
info_list.push(info);
//通过数组的长度得到获奖个数
info_student.student_one = school1_s_one.length;
info_student.student_two = school1_s_two.length;
info_student.student_three = school1_s_three.length;
info_student.student_four = school1_s_four.length;
info_student_list.push(info_student);
}
//循环数组刷到前端界面然后拷贝到excel表里
for(var i=0;i<info_list.length;i++){
var info=info_list[i];
var html=`
<tbody>
<tr>
<td>${info.address}</td>
<td>${info.type}</td>
<td>${info.school_name}</td>
<td>${info.teacher_one}</td>
<td>${info.teacher_two}</td>
<td>${info.teacher_three}</td>
<td>${info.teacher_four}</td>
</tr>
</tbody>>
`;
$("#table").append(html);
}
for(var i=0;i<info_student_list.length;i++){
var info_student=info_student_list[i];
var html=`
<tbody>
<tr>
<td>${info_student.address}</td>
<td>${info_student.type}</td>
<td>${info_student.school_name}</td>
<td>${info_student.student_one}</td>
<td>${info_student.student_two}</td>
<td>${info_student.student_three}</td>
<td>${info_student.student_four}</td>
</tr>
</tbody>>
`;
$("#table_student").append(html);
}
说明:本代码拼接字符串用的是ECMA6的小撇号,本方法在IE下不能解析出来,可以通过http://babeljs.io/repl/ 转码实现,
如果不想转码的话,可以考虑用引号拼接字符串。
本代码使用jquery来减少代码量
转载请声明出处!
两个excel文件,一个是按获奖人名整理的获奖数据(分老师和学生两种身份,获奖类型分一、二、三等奖),另一个是按报送学校整理的数据(学校类型分为高职和中职),报送的学校要比获奖的学校个数多,业务需求是按学校类型统计获奖学校的老师和学生每一个获奖类型的个数。
首先推荐一个把excel转为json的在线网站 http://www.bejson.com/json/col2json/
举例说明两个json数据:
var data= [ {"id":"1","school_name":"***学院","address":"北京","获奖用户姓名":"张三","level":"一等奖","type":"高职","zw":"老师"},
{"id":"2","school_name":"***学院","address":"北京","获奖用户姓名":"赵四","level":"二等奖","type":"高职","zw":"学生"}]
var s_all=[ {"id":"1","adress":"北京,"school_name":"***学院","type":"中职"},{"id":"2","adress":"北京,"school_name":"***学院","type":"高职"}]
1、创建两个数组分别存放老师和学生的数据
var info_list=[];
var info_student_list=[];
2、循环s_all
for( var j=0;j<s_all.length;j++) {
var info={"school_name":" ","address":" ","type":" ","teacher_one":"","teacher_two":"","teacher_three":"","teacher_four":" “};//按老师身份声明对象
var info_student={"school_name":"","address":" ","type":" ",student_one:" ",student_two:" ",student_three:" ",student_four:" "};//按学生身份申明对象
var school1=[];//存放筛选出的获奖学校
var school1_t=[];//存放获奖学校的老师数据
var school1_t_one=[];//存放获得一等奖的老师
var school1_t_two=[];
var school1_t_three=[];
var school1_t_four=[];
var school1_s=[];//存放获奖学校的学生数据
var school1_s_one=[];//存放获得一等奖的学生
var school1_s_two=[];
var school1_s_three=[];
var school1_s_four=[];
info.school_name = s_all[j].school_name;
info.address = s_all[j].adress;
info.type = s_all[j].type;
info_student.school_name = s_all[j].school_name;
info_student.address = s_all[j].adress;
info_student.type = s_all[j].type;
//筛选获奖学校
for (var i = 0; i < data.length; i++) {
if (data[i].school_name == s_all[j].school_name) {//筛选出获奖学校
school1.push(data[i]);
}
}
//老师
for (var i = 0; i < school1.length; i++) {
if (school1[i].zw == "老师") {
school1_t.push(school1[i]);
}
}
for (var i = 0; i < school1_t.length; i++) {
if (school1_t[i].level == "一等奖") {
school1_t_one.push(school1_t[i]);
}
}
for (var i = 0; i < school1_t.length; i++) {
if (school1_t[i].level == "二等奖") {
school1_t_two.push(school1_t[i]);
}
}
for (var i = 0; i < school1_t.length; i++) {
if (school1_t[i].level == "三等奖") {
school1_t_three.push(school1_t[i]);
}
}
for (var i = 0; i < school1_t.length; i++) {
if (school1_t[i].level == "优秀奖") {
school1_t_four.push(school1_t[i]);
}
}
//学生
for (var i = 0; i < school1.length; i++) {
if (school1[i].zw == "学生") {
school1_s.push(school1[i]);
}
}
for (var i = 0; i < school1_s.length; i++) {
if (school1_s[i].level == "一等奖") {
school1_s_one.push(school1_t[i]);
}
}
for (var i = 0; i < school1_s.length; i++) {
if (school1_s[i].level == "二等奖") {
school1_s_two.push(school1_t[i]);
}
}
for (var i = 0; i < school1_s.length; i++) {
if (school1_s[i].level == "三等奖") {
school1_s_thre
a2a9
e.push(school1_t[i]);
}
}
for (var i = 0; i < school1_s.length; i++) {
if (school1_s[i].level == "优秀奖") {
school1_s_four.push(school1_t[i]);
}
}
//通过数组的长度得到获奖个数
info.teacher_one = school1_t_one.length;
info.teacher_two = school1_t_two.length;
info.teacher_three = school1_t_three.length;
info.teacher_four = school1_t_four.length;
info_list.push(info);
//通过数组的长度得到获奖个数
info_student.student_one = school1_s_one.length;
info_student.student_two = school1_s_two.length;
info_student.student_three = school1_s_three.length;
info_student.student_four = school1_s_four.length;
info_student_list.push(info_student);
}
//循环数组刷到前端界面然后拷贝到excel表里
for(var i=0;i<info_list.length;i++){
var info=info_list[i];
var html=`
<tbody>
<tr>
<td>${info.address}</td>
<td>${info.type}</td>
<td>${info.school_name}</td>
<td>${info.teacher_one}</td>
<td>${info.teacher_two}</td>
<td>${info.teacher_three}</td>
<td>${info.teacher_four}</td>
</tr>
</tbody>>
`;
$("#table").append(html);
}
for(var i=0;i<info_student_list.length;i++){
var info_student=info_student_list[i];
var html=`
<tbody>
<tr>
<td>${info_student.address}</td>
<td>${info_student.type}</td>
<td>${info_student.school_name}</td>
<td>${info_student.student_one}</td>
<td>${info_student.student_two}</td>
<td>${info_student.student_three}</td>
<td>${info_student.student_four}</td>
</tr>
</tbody>>
`;
$("#table_student").append(html);
}
说明:本代码拼接字符串用的是ECMA6的小撇号,本方法在IE下不能解析出来,可以通过http://babeljs.io/repl/ 转码实现,
如果不想转码的话,可以考虑用引号拼接字符串。
本代码使用jquery来减少代码量
转载请声明出处!
相关文章推荐
- AJAX提交表单后要清空,否则再次提交原来的数据会认为重复提交,提交失败。使用ajaxSubmit 函数需要引入jquery.form.min.js 文件
- Aspose.Cells 使用整理:读取Excel文件里的数据
- 使用C#查询excel文件中的数据
- 使用poi将数据导出为excel文件的几点注意
- net控件中数据导到Excel的格式 首先,我们了解一下excel从web页面上导出的原理。当我们把这些数据发送到客户端时,我们想让客户端程序(浏览器)以excel的格式读取它,所以把mime类型设为:application/vnd.ms-excel,当excel读取文件时会以每个cell的格式呈现数据,如果cell没有规定的格式,则excel会以默认的格式去呈现该cell的数据。这样就给我们提供了自定义数据格式的空间,当然我们必须使用excel支持的格式。下面就列出常用的一些格式: 1) 文本
- 使用C#把Excel格式文件的数据导入到sqlserver中
- SQL SERVER使用OpenRowset,、OpenDataSource函数导入、导出数据到Excel 的几种方法(整理)
- 在Excel中使用VBA来筛选数据
- 关于excel->csv文件的转换需要使用宏,高分求助- VB / VBA
- 使用C#查询excel文件中的数据
- C#使用sql语句读取excel文件数据
- 使用Apache POI创建Excel,并从数据库中读取数据写入到Excel文件中
- 在Excel中使用VBA来筛选数据
- 在DELPHI中使用ADO直接访问Excel数据文件
- 使用utl_file将oracle数据库中数据写入excel文件
- 在DELPHI中使用ADO直接访问Excel数据文件(收藏)
- 使用JAVA读取EXCEL文件里面的数据
- 直接将数据导出到Excel文件,直接操作文件没有使用Variant
- Asp.net/c#+OleDb操作excel文件(二),数据传输使用Parameters
- 在DELPHI中使用ADO直接访问Excel数据文件