using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using Quiz.Models; using Quiz.Models.Domain; using Quiz.Utility; namespace Quiz.WebsiteAnalysis { public partial class Index : System.Web.UI.Page { protected string type = ""; protected void Page_Load(object sender, EventArgs e) { } #region 绍兴市属 protected void Button1_Click(object sender, EventArgs e) { List ansers = BLL.UserBll.GetAnswers(); var topList = (List)SiteBase.Cache.CacheManage.Topic.CacheData; if (ansers != null && ansers.Count > 0) { DataTable dt = new DataTable(); dt.Columns.AddRange(new DataColumn[]{ new DataColumn("类别",typeof(string)), new DataColumn("学校类型",typeof(string)), new DataColumn("学校名称",typeof(string)), new DataColumn("班级名称",typeof(string)), new DataColumn("姓名",typeof(string)), new DataColumn("父母姓名",typeof(string)), new DataColumn("手机",typeof(string)), new DataColumn("题号",typeof(string)), new DataColumn("题目",typeof(string)), new DataColumn("答案",typeof(string)) }); DataRow dr = null; foreach (var ans in ansers) { var result = Quiz.Utility.XmlSerializer.Deserialize(ans.Keys); if (result != null) { foreach (var reskey in result.KeyList) { dr = dt.NewRow(); var dd = dt.NewRow(); dr["类别"] = Enum.GetName(typeof(UserTypeEnum), ans.UserType); dr["学校类型"] = ans.schoolType; dr["学校名称"] = ans.SchoolName; dr["班级名称"] = ans.ClassName; dr["姓名"] = ans.StudentName; dr["父母姓名"] = ans.ParentName; dr["手机"] = ans.PhoneName; if (reskey.TopicId == 0) { reskey.TopicId = 12; dr["题目"] = topList.Find(o => o.ID == reskey.TopicId).Question; var s = reskey.Keys; var ytt = s.ToString().Split(','); dr["答案"] = ytt[0]; dd["类别"] = Enum.GetName(typeof(UserTypeEnum), ans.UserType); dd["学校名称"] = ans.SchoolName; dd["班级名称"] = ans.ClassName; dd["姓名"] = ans.StudentName; dr["父母姓名"] = ans.ParentName; dd["手机"] = ans.PhoneName; dd["题目"] = "您的意见与建议:"; dd["题号"] = 13; dd["答案"] = ytt[1]; } else { dr["答案"] = reskey.Keys; } dr["题号"] = reskey.TopicId; dr["题目"] = topList.Find(o => o.ID == reskey.TopicId).Question; // dt.Rows.Add(dr); if (reskey.TopicId == 13 && result.KeyList.Count < 13) { dt.Rows.Add(dd); } } } } Tool.DataTableToExcel(dt, "明细结果" + DateTime.Now + ".xlsx"); } } protected void Button2_Click(object sender, EventArgs e) { List ansers = BLL.UserBll.GetAnswers(); var topList = (List)SiteBase.Cache.CacheManage.Topic.CacheData; var userList = (List)SiteBase.Cache.CacheManage.User.CacheData; if (ansers != null && ansers.Count > 0) { DataTable dt = new DataTable(); dt.Columns.AddRange(new DataColumn[]{ new DataColumn("类别",typeof(string)), new DataColumn("学校类型",typeof(string)), new DataColumn("学校名称",typeof(string)), new DataColumn("姓名",typeof(string)), new DataColumn("手机",typeof(string)), new DataColumn("题号",typeof(string)), new DataColumn("题目",typeof(string)), new DataColumn("答案",typeof(string)) }); DataRow dr = null; foreach (var ans in ansers) { var result = Quiz.Utility.XmlSerializer.Deserialize(ans.Keys);//题目 if (result != null) { foreach (var reskey in result.KeyList) { dr = dt.NewRow(); dr["类别"] = Enum.GetName(typeof(UserTypeEnum), ans.UserType); dr["学校类型"] = ans.schoolType; dr["学校名称"] = ans.SchoolName; dr["姓名"] = ans.StudentName; dr["手机"] = ans.PhoneName; if (reskey.TopicId == 0) reskey.TopicId = 12; dr["题号"] = reskey.TopicId; dr["题目"] = topList.Find(o => o.ID == reskey.TopicId).Question; dr["答案"] = reskey.Keys; dt.Rows.Add(dr); } } } var list = ModelConstructor.CreateModelList(dt);//所有题目 var analysislist = new List(); var groups = list.GroupBy(o => o.学校名称); foreach (IGrouping g in groups) { var s = g.GroupBy(o => o.题号); foreach (IGrouping item in s)//每个题目分组 { var templist = item.ToList(); var xxx = new ZdyAnswerAnalysis() { 类别 = templist[0].类别, 学校类型 = templist[0].学校类型, 学校名称 = templist[0].学校名称, 学校总人数 = userList.FindAll(o => o.SchoolName == templist[0].学校名称).Count, 题号 = templist[0].题号, 题目 = templist[0].题目, 答案list = new List() }; var answers = item.GroupBy(o => o.答案); foreach (var answer in answers) { var templist2 = answer.ToList(); xxx.答案list.Add(new ZdyAnswerAnalysisItem() { 答案 = templist2[0].答案, 答案统计 = templist2.Count, 总人数 = templist.Count }); } analysislist.Add(xxx); } } DataTable dt2 = new DataTable(); dt2.Columns.AddRange(new DataColumn[]{ new DataColumn("类别",typeof(string)), new DataColumn("学校类型",typeof(string)), new DataColumn("学校名称",typeof(string)), new DataColumn("学校总数",typeof(int)), new DataColumn("题号",typeof(string)), new DataColumn("题目",typeof(string)) //new DataColumn("A",typeof(string)), //new DataColumn("B",typeof(string)), //new DataColumn("C",typeof(string)), //new DataColumn("D",typeof(string)) }); foreach (var analysis in analysislist) { if (analysis.题号 != 11 && analysis.题号 != 13) { dr = dt2.NewRow(); dr["类别"] = analysis.类别; dr["学校类型"] = analysis.学校类型; dr["学校名称"] = analysis.学校名称; dr["学校总数"] = userList.Count(o => o.SchoolName == analysis.学校名称); dr["题号"] = analysis.题号; dr["题目"] = analysis.题目; int j = 0; analysis.答案list = analysis.答案list.OrderBy(o => o.答案).ToList(); for (int i = 0; i < analysis.答案list.Count; i++) { int index = i + 6 + j; //if (dt2.Columns.Count <= index) if (dt2.Columns.Count <= index) { dt2.Columns.Add(new DataColumn("答案" + i, typeof(string))); dt2.Columns.Add(new DataColumn("答案" + i + "人数", typeof(int))); dt2.Columns.Add(new DataColumn("参与" + i + "人数", typeof(int))); dt2.Columns.Add(new DataColumn("比例" + i, typeof(string))); } string daan = ""; var tm = topList.Find(o => o.ID == analysis.题号); if (tm != null && analysis.答案list[i].答案 == "A") { daan = tm.A; } else if (tm != null && analysis.答案list[i].答案 == "B") { daan = tm.B; } else if (tm != null && analysis.答案list[i].答案 == "C") { daan = tm.C; } else if (tm != null && analysis.答案list[i].答案 == "D") { daan = tm.D; } else { daan = analysis.答案list[i].答案; } dr[index] = daan; dr[index + 1] = analysis.答案list[i].答案统计; dr[index + 2] = analysis.答案list[i].总人数; dr[index + 3] = Math.Round(analysis.答案list[i].比例, 2) + "%"; j = j + 3; } dt2.Rows.Add(dr); } } Tool.DataTableToExcel(dt2, "按学校统计结果" + DateTime.Now + ".xlsx"); } } protected void Button3_Click(object sender, EventArgs e) { List ansers = BLL.UserBll.GetAnswers(); var topList = (List)SiteBase.Cache.CacheManage.Topic.CacheData; if (ansers != null && ansers.Count > 0) { DataTable dt = new DataTable(); dt.Columns.AddRange(new DataColumn[]{ new DataColumn("类别",typeof(string)), new DataColumn("学校名称",typeof(string)), new DataColumn("姓名",typeof(string)), new DataColumn("手机",typeof(string)), new DataColumn("题号",typeof(string)), new DataColumn("题目",typeof(string)), new DataColumn("答案",typeof(string)) }); DataRow dr = null; foreach (var ans in ansers) { var result = Quiz.Utility.XmlSerializer.Deserialize(ans.Keys); if (result != null) { foreach (var reskey in result.KeyList) { dr = dt.NewRow(); dr["类别"] = Enum.GetName(typeof(UserTypeEnum), ans.UserType); dr["学校名称"] = ans.SchoolName; dr["姓名"] = ans.StudentName; dr["手机"] = ans.PhoneName; if (reskey.TopicId == 0) reskey.TopicId = 12; dr["题号"] = reskey.TopicId; dr["题目"] = topList.Find(o => o.ID == reskey.TopicId).Question; dr["答案"] = reskey.Keys; dt.Rows.Add(dr); } } } var list = ModelConstructor.CreateModelList(dt); var analysislist = new List(); var groups = list.GroupBy(o => o.类别); foreach (IGrouping g in groups) { var s = g.GroupBy(o => o.题号); foreach (IGrouping item in s)//每个类别分组 { var templist = item.ToList(); var xxx = new ZdyAnswerAnalysis() { 类别 = templist[0].类别, //学校名称 = templist[0].学校名称, 题号 = templist[0].题号, 题目 = templist[0].题目, 答案list = new List() }; var answers = item.GroupBy(o => o.答案); foreach (var answer in answers) { var templist2 = answer.ToList(); xxx.答案list.Add(new ZdyAnswerAnalysisItem() { 答案 = templist2[0].答案, 答案统计 = templist2.Count, 总人数 = templist.Count }); } analysislist.Add(xxx); } } DataTable dt2 = new DataTable(); dt2.Columns.AddRange(new DataColumn[]{ new DataColumn("类别",typeof(string)), //new DataColumn("学校名称",typeof(string)), new DataColumn("题号",typeof(string)), new DataColumn("题目",typeof(string)), //new DataColumn("A",typeof(string)), //new DataColumn("B",typeof(string)), //new DataColumn("C",typeof(string)), //new DataColumn("D",typeof(string)) }); foreach (var analysis in analysislist) { if (analysis.题号 != 11 && analysis.题号 != 13) { dr = dt2.NewRow(); dr["类别"] = analysis.类别; //dr["学校名称"] = analysis.学校名称; dr["题号"] = analysis.题号; dr["题目"] = analysis.题目; int j = 0; for (int i = 0; i < analysis.答案list.Count; i++) { int index = i + 3 + j; if (dt2.Columns.Count <= index) { dt2.Columns.Add(new DataColumn("答案" + i, typeof(string))); dt2.Columns.Add(new DataColumn("比例" + i, typeof(string))); } string daan = ""; var tm = topList.Find(o => o.ID == analysis.题号); if (tm != null && analysis.答案list[i].答案 == "A") { daan = tm.A; } else if (tm != null && analysis.答案list[i].答案 == "B") { daan = tm.B; } else if (tm != null && analysis.答案list[i].答案 == "C") { daan = tm.C; } else if (tm != null && analysis.答案list[i].答案 == "D") { daan = tm.D; } else { daan = analysis.答案list[i].答案; } dr[index] = daan + "(" + analysis.答案list[i].答案统计 + "/" + analysis.答案list[i].总人数 + ")"; dr[index + 1] = Math.Round(analysis.答案list[i].比例, 2) + "%"; j++; } dt2.Rows.Add(dr); } } Tool.DataTableToExcel(dt2, "总体统计结果" + DateTime.Now + ".xlsx"); } } protected void Button4_Click(object sender, EventArgs e) { List ansers = BLL.UserBll.GetAnswers(); var topList = (List)SiteBase.Cache.CacheManage.Topic.CacheData; var userList = (List)SiteBase.Cache.CacheManage.User.CacheData; if (ansers != null && ansers.Count > 0) { DataTable dt = new DataTable(); dt.Columns.AddRange(new DataColumn[]{ new DataColumn("类别",typeof(string)), new DataColumn("学校类型",typeof(string)), new DataColumn("学校名称",typeof(string)), new DataColumn("班级名称",typeof(string)), new DataColumn("姓名",typeof(string)), new DataColumn("手机",typeof(string)), new DataColumn("题号",typeof(string)), new DataColumn("题目",typeof(string)), new DataColumn("答案",typeof(string)) }); DataRow dr = null; foreach (var ans in ansers) { var result = Quiz.Utility.XmlSerializer.Deserialize(ans.Keys); if (result != null) { foreach (var reskey in result.KeyList) { dr = dt.NewRow(); dr["类别"] = Enum.GetName(typeof(UserTypeEnum), ans.UserType); dr["学校类型"] = ans.schoolType; dr["学校名称"] = ans.SchoolName; dr["班级名称"] = ans.ClassName; dr["姓名"] = ans.StudentName; dr["手机"] = ans.PhoneName; dr["题号"] = reskey.TopicId; if (reskey.TopicId == 0) reskey.TopicId = 12; dr["题目"] = topList.Find(o => o.ID == reskey.TopicId).Question; dr["答案"] = reskey.Keys; dt.Rows.Add(dr); } } } var list = ModelConstructor.CreateModelList(dt); //var analysislist = new List(); //var groups = list.GroupBy(o => o.学校名称); //foreach (IGrouping g in groups) //{ // var s = g.GroupBy(o => o.题号); // foreach (IGrouping item in s)//每个题目分组 // { // var templist = item.ToList(); // var xxx = new ZdyAnswerAnalysis() // { // 类别 = templist[0].类别, // 学校名称 = templist[0].学校名称, // 题号 = templist[0].题号, // 题目 = templist[0].题目, // 答案list = new List() // }; // var answers = item.GroupBy(o => o.答案); // foreach (var answer in answers) // { // var templist2 = answer.ToList(); // xxx.答案list.Add(new ZdyAnswerAnalysisItem() // { // 答案 = templist2[0].答案, // 答案统计 = templist2.Count, // 总人数 = templist.Count // }); // } // analysislist.Add(xxx); // } //} var analysislist = new List(); var groupsleibie = list.GroupBy(o => o.类别); foreach (IGrouping group in groupsleibie) { var ss = group.ToList(); var groups = ss.GroupBy(o => o.学校名称).ToList(); foreach (IGrouping g in groups) { var analysis2 = g.ToList(); var classN = g.GroupBy(o => o.班级名称); foreach (IGrouping c in classN)//班级 { var schools = new ZdyAnswerAnalysis2 { 类别 = ss[0].类别, 学校名称 = analysis2[0].学校名称, 学校类型 = analysis2[0].学校类型, 班级名称 = analysis2[0].班级名称 }; var analysis3 = c.ToList(); schools.班级名称 = analysis3[0].班级名称; schools.题目list = new List(); var timu = c.GroupBy(o => o.题号); foreach (IGrouping tm in timu) { var tm2 = tm.ToList(); schools.总数 = tm2.Count.ToString(); var tmschool = new ZdyAnswerAnalysisQuestion { 题号 = tm2[0].题号, 题目 = tm2[0].题目 }; schools.题目list.Add(tmschool); tmschool.答案list = new List(); var answers = tm.GroupBy(o => o.答案); foreach (var anser in answers) { var ans = anser.ToList(); tmschool.答案list.Add(new ZdyAnswerAnalysisItem { 答案 = ans[0].答案, 答案统计 = ans.Count, 总人数 = tm2.Count }); } } analysislist.Add(schools); //} }//end 构造的新list } DataTable dt2 = new DataTable(); dt2.Columns.AddRange(new DataColumn[]{ new DataColumn("类别",typeof(string)), new DataColumn("学校类型",typeof(string)), new DataColumn("学校名称",typeof(string)), new DataColumn("班级名称",typeof(string)), new DataColumn("班级总人数",typeof(int)), new DataColumn("班级回收数",typeof(string)), //new DataColumn("班级回收率",typeof(string)), //new DataColumn("校风校纪(%)",typeof(string)), new DataColumn("校风校纪(满意)",typeof(int)), new DataColumn("校风校纪(较满意)",typeof(int)), new DataColumn("校风校纪(不满意)",typeof(int)), //new DataColumn("规范收费(%)",typeof(string)), new DataColumn("规范收费(满意)",typeof(int)), new DataColumn("规范收费(较满意)",typeof(int)), new DataColumn("规范收费(不满意)",typeof(int)), //new DataColumn("教学质量(%)",typeof(string)), new DataColumn("教学质量(满意)",typeof(int)), new DataColumn("教学质量(较满意)",typeof(int)), new DataColumn("教学质量(不满意)",typeof(int)), //new DataColumn("师德师风(%)",typeof(string)), new DataColumn("师德师风(满意)",typeof(int)), new DataColumn("师德师风(较满意)",typeof(int)), new DataColumn("师德师风(不满意)",typeof(int)), //new DataColumn("家访联系(%)",typeof(string)), new DataColumn("家访联系(满意)",typeof(int)), new DataColumn("家访联系(较满意)",typeof(int)), new DataColumn("家访联系(不满意)",typeof(int)), //new DataColumn("食堂质量(%)",typeof(string)), new DataColumn("食堂质量(满意)",typeof(int)), new DataColumn("食堂质量(较满意)",typeof(int)), new DataColumn("食堂质量(不满意)",typeof(int)), //new DataColumn("作业负担(%)",typeof(string)), new DataColumn("作业负担(满意)",typeof(int)), new DataColumn("作业负担(较满意)",typeof(int)), new DataColumn("作业负担(不满意)",typeof(int)), //new DataColumn("教师有偿家教(%)",typeof(string)), new DataColumn("教师有偿家教(没有)",typeof(int)), new DataColumn("教师有偿家教(少量)",typeof(int)), new DataColumn("教师有偿家教(较多)",typeof(int)), //new DataColumn("教师收受礼品礼金、接受宴请等(%)",typeof(string)), new DataColumn("教师收受礼品礼金、接受宴请等(没有)",typeof(int)), new DataColumn("教师收受礼品礼金、接受宴请等(少量)",typeof(int)), new DataColumn("教师收受礼品礼金、接受宴请等(较多)",typeof(int)), //new DataColumn("收受礼金(没有)",typeof(int)), //new DataColumn("收受礼金(少量)",typeof(int)), //new DataColumn("收受礼金(较多)",typeof(int)), //new DataColumn("总体评价(%)",typeof(string)), new DataColumn("总体评价(满意)",typeof(int)), new DataColumn("总体评价(较满意)",typeof(int)), new DataColumn("总体评价(不满意)",typeof(int)), }); foreach (var analysis in analysislist) { dr = dt2.NewRow(); dr["类别"] = analysis.类别; dr["学校类型"] = analysis.学校类型; dr["学校名称"] = analysis.学校名称; dr["班级名称"] = analysis.班级名称; var cont= userList.Count(o => o.SchoolName == analysis.学校名称 && o.UserType == 0 && o.ClassName == analysis.班级名称); dr["班级总人数"] = cont; dr["班级回收数"] = analysis.总数; //dr["班级回收率"] = (float.Parse(analysis.总数)/ cont*100).ToString("#0.00") +"%"; string next = ""; for (int i = 0; i < analysis.题目list.Count; i++) { int ssa1 = 0; var s = ""; string jg = ""; if (analysis.题目list[i].题号 != 11 && analysis.题目list[i].题号 != 13) { for (int j = 0; j < analysis.题目list[i].答案list.Count; j++) { var d = analysis.题目list[i].答案list[j].答案统计; int dn = int.Parse(d.ToString()); //if (string.IsNullOrEmpty(d.ToString())) dn = 0; //if (next != s) ssa1 = 0; switch (analysis.题目list[i].题目 + ":" + analysis.题目list[i].答案list[j].答案) { //case "您对班级教师、阿姨照顾幼儿生活方面的评价:A": // dr["照顾幼儿(仔细)"] = analysis.题目list[i].答案list[j].答案统计; // break; //case "您对班级教师、阿姨照顾幼儿生活方面的评价:B": // dr["照顾幼儿(较仔细)"] = analysis.题目list[i].答案list[j].答案统计; break; //case "您对班级教师、阿姨照顾幼儿生活方面的评价:C": // dr["照顾幼儿(不仔细)"] = analysis.题目list[i].答案list[j].答案统计; break; //case "学校有严格的校纪校风与良好校容校貌。:D": // dr["校纪校风(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; case "您对您子女就读的学校校风校纪满意吗?:A": dr["校风校纪(满意)"] = dn; //s = "校风校纪(%)"; //ssa1+= dn; //jg=((ssa1*0.8/int.Parse(analysis.总数))*100).ToString("#0.00") + "%"; break; case "您对您子女就读的学校校风校纪满意吗?:B": dr["校风校纪(较满意)"] = dn; /*s = "校风校纪(%)" ;ssa1 += dn;*/ //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "您对您子女就读的学校校风校纪满意吗?:C": dr["校风校纪(不满意)"] = dn; /*s = "校风校纪(%)"; */break; //case "严格执行教育收费规定,无乱收费行为。:D": // dr["规范收费(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; case "您觉得您子女就读的学校规范收费做得怎么样?:A": dr["规范收费(满意)"] = dn; /*s = "规范收费(%)";*/ //ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "您觉得您子女就读的学校规范收费做得怎么样?:B": dr["规范收费(较满意)"] = dn; /*s = "规范收费(%)";*/ //ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "您觉得您子女就读的学校规范收费做得怎么样?:C": dr["规范收费(不满意)"] = dn;/* s = "规范收费(%)"; */break; //case "从严规范教育教学工作,教学质量稳步提升。:D": // dr["教育质量(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; case "您对您子女就读的学校教学质量满意吗?:A": dr["教学质量(满意)"] = dn;/* s = "教学质量(%)";*/ //ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "您对您子女就读的学校教学质量满意吗?:B": dr["教学质量(较满意)"] = dn; /*s = "教学质量(%)";*/ //ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "您对您子女就读的学校教学质量满意吗?:C": dr["教学质量(不满意)"] = dn; /*s = "教学质量(%)"; */break; //case "老师注重对学生的思想教育和良好行为习惯的培养,无体罚或变相体罚学生行为。:D": // dr["师德师风(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; case "您对您子女就读的学校师德师风满意吗?:A": dr["师德师风(满意)"] = dn;/* s = "师德师风(%)*/ // ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "您对您子女就读的学校师德师风满意吗?:B": dr["师德师风(较满意)"] = dn; s = "师德师风(%)"; //ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "您对您子女就读的学校师德师风满意吗?:C": dr["师德师风(不满意)"] = dn; break;// s = "师德师风(%)"; //case "中小学校教师能科学布置学生课内外作业,作业量适中,能按时批改;幼儿教师能做到细心周到,轻松教学。:D": // dr["作业负担(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; case "您觉得您子女就读的学校家访联系做得怎么样?:A": dr["家访联系(满意)"] = dn; //s = "家访联系(%)"; //ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "您觉得您子女就读的学校家访联系做得怎么样?:B": dr["家访联系(较满意)"] = dn; //s = "家访联系(%)"; // ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "您觉得您子女就读的学校家访联系做得怎么样?:C": dr["家访联系(不满意)"] = dn; //s = "家访联系(%)"; //case "学校不统一组织或变相要求额外订购书刊及教辅用书,不组织或推荐学生参与有偿补课和其他有偿培训活动。:D": // dr["有偿补课(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; break; case "您对您子女就读的学校食堂质量满意吗?:A": dr["食堂质量(满意)"] = dn; //s = "食堂质量(%)"; // ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; ; break; case "您对您子女就读的学校食堂质量满意吗?:B": dr["食堂质量(较满意)"] = dn; //s = "食堂质量(%)"; //ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "您对您子女就读的学校食堂质量满意吗?:C": dr["食堂质量(不满意)"] = dn;// s = "食堂质量(%)"; //case "学校食堂收费合理,饭菜卫生量足价廉,按时公布食谱。:D": // dr["食堂质量(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; break; case "您认为您子女就读的学校作业负担如何?:A": dr["作业负担(满意)"] = dn; // = "作业负担(%)"; //ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "您认为您子女就读的学校作业负担如何?:B": dr["作业负担(较满意)"] = dn; //s = "作业负担(%)"; // ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "您认为您子女就读的学校作业负担如何?:C": dr["作业负担(不满意)"] = dn; //s = "作业负担(%)"; //case "教师廉洁从教,不收受家长礼物或接受家长宴请。:D": // dr["廉洁从教(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; break; case "您所了解的您子女就读学校有没有教师有偿家教?:A": dr["教师有偿家教(没有)"] = dn; //s = "教师有偿家教(%)"; // ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "您所了解的您子女就读学校有没有教师有偿家教?:B": dr["教师有偿家教(少量)"] = dn; //s = "教师有偿家教(%)"; // ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "您所了解的您子女就读学校有没有教师有偿家教?:C": dr["教师有偿家教(较多)"] = dn; //s = "教师有偿家教(%)"; //case "能定期召开家长会或上门家访,与家长进行多种形式的沟通。:D": // dr["家访联系(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; break; case "您所了解的您子女就读学校有没有教师收受礼品礼金、接受宴请等?:A": dr["教师收受礼品礼金、接受宴请等(没有)"] = dn; // s = "教师收受礼品礼金、接受宴请等(%)"; ///ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "您所了解的您子女就读学校有没有教师收受礼品礼金、接受宴请等?:B": dr["教师收受礼品礼金、接受宴请等(少量)"] = dn; // s = "教师收受礼品礼金、接受宴请等(%)"; // ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "您所了解的您子女就读学校有没有教师收受礼品礼金、接受宴请等?:C": dr["教师收受礼品礼金、接受宴请等(较多)"] = dn; //s = "教师收受礼品礼金、接受宴请等(%)"; break; case "您对您子女就读的学校总体评价如何?:A": dr["总体评价(满意)"] = dn; // s = "总体评价(%)"; // ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "您对您子女就读的学校总体评价如何?:B": dr["总体评价(较满意)"] = dn; //s = "总体评价(%)"; // ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "您对您子女就读的学校总体评价如何?:C": dr["总体评价(不满意)"] = dn; //s = "总体评价(%)"; break; //case "您对学校教育管理总体评价。:D": // dr["总体评价(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; } //if (!string.IsNullOrEmpty(s)) //{ // dr[s] = jg; // next = s; //} } } } dt2.Rows.Add(dr); } //var s = dt2; Tool.DataTableToExcel(dt2, "按学校班级统计结果格式版" + DateTime.Now + ".xlsx"); } } } /// /// 按学校格式版 /// /// /// protected void Button13_Click(object sender, EventArgs e) { List ansers = BLL.UserBll.GetAnswers(); var topList = (List)SiteBase.Cache.CacheManage.Topic.CacheData; var userList = (List)SiteBase.Cache.CacheManage.User.CacheData; if (ansers != null && ansers.Count > 0) { DataTable dt = new DataTable(); dt.Columns.AddRange(new DataColumn[]{ new DataColumn("类别",typeof(string)), new DataColumn("学校类型",typeof(string)), new DataColumn("学校名称",typeof(string)), new DataColumn("班级名称",typeof(string)), new DataColumn("姓名",typeof(string)), new DataColumn("手机",typeof(string)), new DataColumn("题号",typeof(string)), new DataColumn("题目",typeof(string)), new DataColumn("答案",typeof(string)) }); DataRow dr = null; foreach (var ans in ansers) { var result = Quiz.Utility.XmlSerializer.Deserialize(ans.Keys); if (result != null) { foreach (var reskey in result.KeyList) { dr = dt.NewRow(); dr["类别"] = Enum.GetName(typeof(UserTypeEnum), ans.UserType); dr["学校类型"] = ans.schoolType; dr["学校名称"] = ans.SchoolName; dr["班级名称"] = ans.ClassName; dr["姓名"] = ans.StudentName; dr["手机"] = ans.PhoneName; dr["题号"] = reskey.TopicId; if (reskey.TopicId == 0) reskey.TopicId = 12; dr["题目"] = topList.Find(o => o.ID == reskey.TopicId).Question; dr["答案"] = reskey.Keys; dt.Rows.Add(dr); } } } var list = ModelConstructor.CreateModelList(dt); //var analysislist = new List(); //var groups = list.GroupBy(o => o.学校名称); //foreach (IGrouping g in groups) //{ // var s = g.GroupBy(o => o.题号); // foreach (IGrouping item in s)//每个题目分组 // { // var templist = item.ToList(); // var xxx = new ZdyAnswerAnalysis() // { // 类别 = templist[0].类别, // 学校名称 = templist[0].学校名称, // 题号 = templist[0].题号, // 题目 = templist[0].题目, // 答案list = new List() // }; // var answers = item.GroupBy(o => o.答案); // foreach (var answer in answers) // { // var templist2 = answer.ToList(); // xxx.答案list.Add(new ZdyAnswerAnalysisItem() // { // 答案 = templist2[0].答案, // 答案统计 = templist2.Count, // 总人数 = templist.Count // }); // } // analysislist.Add(xxx); // } //} var analysislist = new List(); var groupsleibie = list.GroupBy(o => o.类别); foreach (IGrouping group in groupsleibie) { var ss = group.ToList(); var groups = ss.GroupBy(o => o.学校名称).ToList(); foreach (IGrouping g in groups) { var analysis2 = g.ToList(); var classN = g.GroupBy(o => o.班级名称); //foreach (IGrouping c in classN)//班级 //{ var schools = new ZdyAnswerAnalysis2 { 类别 = ss[0].类别, 学校名称 = analysis2[0].学校名称, 学校类型 = analysis2[0].学校类型//, //班级名称 = analysis2[0].班级名称 }; var analysis3 = g.ToList(); // schools.班级名称 = analysis3[0].班级名称; schools.题目list = new List(); var timu = g.GroupBy(o => o.题号); foreach (IGrouping tm in timu) { var tm2 = tm.ToList(); schools.总数 = tm2.Count.ToString(); var tmschool = new ZdyAnswerAnalysisQuestion { 题号 = tm2[0].题号, 题目 = tm2[0].题目 }; schools.题目list.Add(tmschool); tmschool.答案list = new List(); var answers = tm.GroupBy(o => o.答案); foreach (var anser in answers) { var ans = anser.ToList(); tmschool.答案list.Add(new ZdyAnswerAnalysisItem { 答案 = ans[0].答案, 答案统计 = ans.Count, 总人数 = tm2.Count }); } } analysislist.Add(schools); //} //}//end 构造的新list } DataTable dt2 = new DataTable(); dt2.Columns.AddRange(new DataColumn[]{ new DataColumn("类别",typeof(string)), new DataColumn("学校类型",typeof(string)), new DataColumn("学校名称",typeof(string)), // new DataColumn("班级名称",typeof(string)), new DataColumn("学校总人数",typeof(int)), new DataColumn("学校回收数",typeof(string)), //new DataColumn("班级回收率",typeof(string)), //new DataColumn("校风校纪(%)",typeof(string)), new DataColumn("校风校纪(满意)",typeof(int)), new DataColumn("校风校纪(较满意)",typeof(int)), new DataColumn("校风校纪(不满意)",typeof(int)), //new DataColumn("规范收费(%)",typeof(string)), new DataColumn("规范收费(满意)",typeof(int)), new DataColumn("规范收费(较满意)",typeof(int)), new DataColumn("规范收费(不满意)",typeof(int)), //new DataColumn("教学质量(%)",typeof(string)), new DataColumn("教学质量(满意)",typeof(int)), new DataColumn("教学质量(较满意)",typeof(int)), new DataColumn("教学质量(不满意)",typeof(int)), //new DataColumn("师德师风(%)",typeof(string)), new DataColumn("师德师风(满意)",typeof(int)), new DataColumn("师德师风(较满意)",typeof(int)), new DataColumn("师德师风(不满意)",typeof(int)), //new DataColumn("家访联系(%)",typeof(string)), new DataColumn("家访联系(满意)",typeof(int)), new DataColumn("家访联系(较满意)",typeof(int)), new DataColumn("家访联系(不满意)",typeof(int)), //new DataColumn("食堂质量(%)",typeof(string)), new DataColumn("食堂质量(满意)",typeof(int)), new DataColumn("食堂质量(较满意)",typeof(int)), new DataColumn("食堂质量(不满意)",typeof(int)), //new DataColumn("作业负担(%)",typeof(string)), new DataColumn("作业负担(满意)",typeof(int)), new DataColumn("作业负担(较满意)",typeof(int)), new DataColumn("作业负担(不满意)",typeof(int)), //new DataColumn("教师有偿家教(%)",typeof(string)), new DataColumn("教师有偿家教(没有)",typeof(int)), new DataColumn("教师有偿家教(少量)",typeof(int)), new DataColumn("教师有偿家教(较多)",typeof(int)), //new DataColumn("教师收受礼品礼金、接受宴请等(%)",typeof(string)), new DataColumn("教师收受礼品礼金、接受宴请等(没有)",typeof(int)), new DataColumn("教师收受礼品礼金、接受宴请等(少量)",typeof(int)), new DataColumn("教师收受礼品礼金、接受宴请等(较多)",typeof(int)), //new DataColumn("收受礼金(没有)",typeof(int)), //new DataColumn("收受礼金(少量)",typeof(int)), //new DataColumn("收受礼金(较多)",typeof(int)), //new DataColumn("总体评价(%)",typeof(string)), new DataColumn("总体评价(满意)",typeof(int)), new DataColumn("总体评价(较满意)",typeof(int)), new DataColumn("总体评价(不满意)",typeof(int)), }); foreach (var analysis in analysislist) { dr = dt2.NewRow(); dr["类别"] = analysis.类别; dr["学校类型"] = analysis.学校类型; dr["学校名称"] = analysis.学校名称; // dr["班级名称"] = analysis.班级名称; var cont = userList.Count(o => o.SchoolName == analysis.学校名称 && o.UserType == 0); dr["学校总人数"] = cont; dr["学校回收数"] = analysis.总数; //dr["班级回收率"] = (float.Parse(analysis.总数)/ cont*100).ToString("#0.00") +"%"; string next = ""; for (int i = 0; i < analysis.题目list.Count; i++) { int ssa1 = 0; var s = ""; string jg = ""; if (analysis.题目list[i].题号 != 11 && analysis.题目list[i].题号 != 13) { for (int j = 0; j < analysis.题目list[i].答案list.Count; j++) { var d = analysis.题目list[i].答案list[j].答案统计; int dn = int.Parse(d.ToString()); //if (string.IsNullOrEmpty(d.ToString())) dn = 0; //if (next != s) ssa1 = 0; switch (analysis.题目list[i].题目 + ":" + analysis.题目list[i].答案list[j].答案) { //case "您对班级教师、阿姨照顾幼儿生活方面的评价:A": // dr["照顾幼儿(仔细)"] = analysis.题目list[i].答案list[j].答案统计; // break; //case "您对班级教师、阿姨照顾幼儿生活方面的评价:B": // dr["照顾幼儿(较仔细)"] = analysis.题目list[i].答案list[j].答案统计; break; //case "您对班级教师、阿姨照顾幼儿生活方面的评价:C": // dr["照顾幼儿(不仔细)"] = analysis.题目list[i].答案list[j].答案统计; break; //case "学校有严格的校纪校风与良好校容校貌。:D": // dr["校纪校风(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; case "您对您子女就读的学校校风校纪满意吗?:A": dr["校风校纪(满意)"] = dn; //s = "校风校纪(%)"; //ssa1+= dn; //jg=((ssa1*0.8/int.Parse(analysis.总数))*100).ToString("#0.00") + "%"; break; case "您对您子女就读的学校校风校纪满意吗?:B": dr["校风校纪(较满意)"] = dn; /*s = "校风校纪(%)" ;ssa1 += dn;*/ //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "您对您子女就读的学校校风校纪满意吗?:C": dr["校风校纪(不满意)"] = dn; /*s = "校风校纪(%)"; */break; //case "严格执行教育收费规定,无乱收费行为。:D": // dr["规范收费(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; case "您觉得您子女就读的学校规范收费做得怎么样?:A": dr["规范收费(满意)"] = dn; /*s = "规范收费(%)";*/ //ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "您觉得您子女就读的学校规范收费做得怎么样?:B": dr["规范收费(较满意)"] = dn; /*s = "规范收费(%)";*/ //ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "您觉得您子女就读的学校规范收费做得怎么样?:C": dr["规范收费(不满意)"] = dn;/* s = "规范收费(%)"; */break; //case "从严规范教育教学工作,教学质量稳步提升。:D": // dr["教育质量(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; case "您对您子女就读的学校教学质量满意吗?:A": dr["教学质量(满意)"] = dn;/* s = "教学质量(%)";*/ //ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "您对您子女就读的学校教学质量满意吗?:B": dr["教学质量(较满意)"] = dn; /*s = "教学质量(%)";*/ //ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "您对您子女就读的学校教学质量满意吗?:C": dr["教学质量(不满意)"] = dn; /*s = "教学质量(%)"; */break; //case "老师注重对学生的思想教育和良好行为习惯的培养,无体罚或变相体罚学生行为。:D": // dr["师德师风(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; case "您对您子女就读的学校师德师风满意吗?:A": dr["师德师风(满意)"] = dn;/* s = "师德师风(%)*/ // ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "您对您子女就读的学校师德师风满意吗?:B": dr["师德师风(较满意)"] = dn; s = "师德师风(%)"; //ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "您对您子女就读的学校师德师风满意吗?:C": dr["师德师风(不满意)"] = dn; break;// s = "师德师风(%)"; //case "中小学校教师能科学布置学生课内外作业,作业量适中,能按时批改;幼儿教师能做到细心周到,轻松教学。:D": // dr["作业负担(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; case "您觉得您子女就读的学校家访联系做得怎么样?:A": dr["家访联系(满意)"] = dn; //s = "家访联系(%)"; //ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "您觉得您子女就读的学校家访联系做得怎么样?:B": dr["家访联系(较满意)"] = dn; //s = "家访联系(%)"; // ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "您觉得您子女就读的学校家访联系做得怎么样?:C": dr["家访联系(不满意)"] = dn; //s = "家访联系(%)"; //case "学校不统一组织或变相要求额外订购书刊及教辅用书,不组织或推荐学生参与有偿补课和其他有偿培训活动。:D": // dr["有偿补课(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; break; case "您对您子女就读的学校食堂质量满意吗?:A": dr["食堂质量(满意)"] = dn; //s = "食堂质量(%)"; // ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; ; break; case "您对您子女就读的学校食堂质量满意吗?:B": dr["食堂质量(较满意)"] = dn; //s = "食堂质量(%)"; //ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "您对您子女就读的学校食堂质量满意吗?:C": dr["食堂质量(不满意)"] = dn;// s = "食堂质量(%)"; //case "学校食堂收费合理,饭菜卫生量足价廉,按时公布食谱。:D": // dr["食堂质量(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; break; case "您认为您子女就读的学校作业负担如何?:A": dr["作业负担(满意)"] = dn; // = "作业负担(%)"; //ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "您认为您子女就读的学校作业负担如何?:B": dr["作业负担(较满意)"] = dn; //s = "作业负担(%)"; // ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "您认为您子女就读的学校作业负担如何?:C": dr["作业负担(不满意)"] = dn; //s = "作业负担(%)"; //case "教师廉洁从教,不收受家长礼物或接受家长宴请。:D": // dr["廉洁从教(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; break; case "您所了解的您子女就读学校有没有教师有偿家教?:A": dr["教师有偿家教(没有)"] = dn; //s = "教师有偿家教(%)"; // ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "您所了解的您子女就读学校有没有教师有偿家教?:B": dr["教师有偿家教(少量)"] = dn; //s = "教师有偿家教(%)"; // ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "您所了解的您子女就读学校有没有教师有偿家教?:C": dr["教师有偿家教(较多)"] = dn; //s = "教师有偿家教(%)"; //case "能定期召开家长会或上门家访,与家长进行多种形式的沟通。:D": // dr["家访联系(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; break; case "您所了解的您子女就读学校有没有教师收受礼品礼金、接受宴请等?:A": dr["教师收受礼品礼金、接受宴请等(没有)"] = dn; // s = "教师收受礼品礼金、接受宴请等(%)"; ///ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "您所了解的您子女就读学校有没有教师收受礼品礼金、接受宴请等?:B": dr["教师收受礼品礼金、接受宴请等(少量)"] = dn; // s = "教师收受礼品礼金、接受宴请等(%)"; // ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "您所了解的您子女就读学校有没有教师收受礼品礼金、接受宴请等?:C": dr["教师收受礼品礼金、接受宴请等(较多)"] = dn; //s = "教师收受礼品礼金、接受宴请等(%)"; break; case "您对您子女就读的学校总体评价如何?:A": dr["总体评价(满意)"] = dn; // s = "总体评价(%)"; // ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "您对您子女就读的学校总体评价如何?:B": dr["总体评价(较满意)"] = dn; //s = "总体评价(%)"; // ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "您对您子女就读的学校总体评价如何?:C": dr["总体评价(不满意)"] = dn; //s = "总体评价(%)"; break; //case "您对学校教育管理总体评价。:D": // dr["总体评价(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; } //if (!string.IsNullOrEmpty(s)) //{ // dr[s] = jg; // next = s; //} } } } dt2.Rows.Add(dr); } //var s = dt2; Tool.DataTableToExcel(dt2, "按学校统计结果格式版" + DateTime.Now + ".xlsx"); } } } #endregion #region 柯桥 protected void Button5_Click(object sender, EventArgs e) { List ansers = BLL.UserBll.GetAnswerskq(); var topList = BLL.UserBll.GetTopicskq(); if (ansers != null && ansers.Count > 0) { DataTable dt = new DataTable(); dt.Columns.AddRange(new DataColumn[]{ new DataColumn("类别",typeof(string)), new DataColumn("学校类型",typeof(string)), new DataColumn("学校名称",typeof(string)), new DataColumn("班级名称",typeof(string)), new DataColumn("姓名",typeof(string)), new DataColumn("父母姓名",typeof(string)), new DataColumn("手机",typeof(string)), new DataColumn("题号",typeof(string)), new DataColumn("题目",typeof(string)), new DataColumn("答案",typeof(string)) }); DataRow dr = null; foreach (var ans in ansers) { var result = Quiz.Utility.XmlSerializer.Deserialize(ans.Keys); if (result != null) { foreach (var reskey in result.KeyList) { dr = dt.NewRow(); var dd = dt.NewRow(); dr["类别"] = Enum.GetName(typeof(UserTypeEnum), ans.UserType); dr["学校类型"] = ans.schoolType; dr["学校名称"] = ans.SchoolName; dr["班级名称"] = ans.ClassName; dr["姓名"] = ans.StudentName; dr["父母姓名"] = ans.ParentName; dr["手机"] = ans.PhoneName; if (reskey.TopicId == 0) { reskey.TopicId = 12; dr["题目"] = topList.Find(o => o.ID == reskey.TopicId).Question; var s = reskey.Keys; var ytt = s.ToString().Split(','); dr["答案"] = ytt[0]; dd["类别"] = Enum.GetName(typeof(UserTypeEnum), ans.UserType); dd["学校名称"] = ans.SchoolName; dd["班级名称"] = ans.ClassName; dd["姓名"] = ans.StudentName; dr["父母姓名"] = ans.ParentName; dd["手机"] = ans.PhoneName; dd["题目"] = "您的意见与建议:"; dd["题号"] = 13; dd["答案"] = ytt[1]; } else { dr["答案"] = reskey.Keys; } dr["题号"] = reskey.TopicId; dr["题目"] = topList.Find(o => o.ID == reskey.TopicId).Question; //string Question= topList.Find(o => o.ID == reskey.TopicId).Question; //if (reskey.TopicId == 11 ) //{ // dt.Rows.Add(dr); //} dt.Rows.Add(dr); //if (reskey.TopicId == 13 && result.KeyList.Count < 13) //{ // dt.Rows.Add(dd); //} } } } Tool.DataTableToExcel(dt, "明细结果" + DateTime.Now + ".xlsx"); } } protected void Button6_Click(object sender, EventArgs e) { List ansers = BLL.UserBll.GetAnswerskq(); var topList = BLL.UserBll.GetTopicskq(); var userList = BLL.UserBll.GetUserskq(); if (ansers != null && ansers.Count > 0) { DataTable dt = new DataTable(); dt.Columns.AddRange(new DataColumn[]{ new DataColumn("类别",typeof(string)), new DataColumn("学校类型",typeof(string)), new DataColumn("学校名称",typeof(string)), new DataColumn("姓名",typeof(string)), new DataColumn("手机",typeof(string)), new DataColumn("题号",typeof(string)), new DataColumn("题目",typeof(string)), new DataColumn("答案",typeof(string)) }); DataRow dr = null; foreach (var ans in ansers) { var result = Quiz.Utility.XmlSerializer.Deserialize(ans.Keys);//题目 if (result != null) { foreach (var reskey in result.KeyList) { dr = dt.NewRow(); dr["类别"] = Enum.GetName(typeof(UserTypeEnum), ans.UserType); dr["学校类型"] = ans.schoolType; dr["学校名称"] = ans.SchoolName; dr["姓名"] = ans.StudentName; dr["手机"] = ans.PhoneName; if (reskey.TopicId == 0) reskey.TopicId = 12; dr["题号"] = reskey.TopicId; dr["题目"] = topList.Find(o => o.ID == reskey.TopicId).Question; dr["答案"] = reskey.Keys; dt.Rows.Add(dr); } } } var list = ModelConstructor.CreateModelList(dt);//所有题目 var analysislist = new List(); var groups = list.GroupBy(o => o.学校名称); foreach (IGrouping g in groups) { var s = g.GroupBy(o => o.题号); foreach (IGrouping item in s)//每个题目分组 { var templist = item.ToList(); var xxx = new ZdyAnswerAnalysis() { 类别 = templist[0].类别, 学校类型 = templist[0].学校类型, 学校名称 = templist[0].学校名称, 学校总人数=userList.FindAll(o=>o.SchoolName== templist[0].学校名称).Count, 题号 = templist[0].题号, 题目 = templist[0].题目, 答案list = new List() }; var answers = item.GroupBy(o => o.答案); foreach (var answer in answers) { var templist2 = answer.ToList(); xxx.答案list.Add(new ZdyAnswerAnalysisItem() { 答案 = templist2[0].答案, 答案统计 = templist2.Count, 总人数 = templist.Count }); } analysislist.Add(xxx); } } DataTable dt2 = new DataTable(); dt2.Columns.AddRange(new DataColumn[]{ new DataColumn("类别",typeof(string)), new DataColumn("学校类型",typeof(string)), new DataColumn("学校名称",typeof(string)), new DataColumn("学校总数",typeof(int)), new DataColumn("题号",typeof(string)), new DataColumn("题目",typeof(string)) //new DataColumn("A",typeof(string)), //new DataColumn("B",typeof(string)), //new DataColumn("C",typeof(string)), //new DataColumn("D",typeof(string)) }); foreach (var analysis in analysislist) { if (analysis.题号 != 11 && analysis.题号 != 13) { dr = dt2.NewRow(); dr["类别"] = analysis.类别; dr["学校类型"] = analysis.学校类型; dr["学校名称"] = analysis.学校名称; dr["学校总数"] = analysis.学校总人数; dr["题号"] = analysis.题号; dr["题目"] = analysis.题目; int j = 0; analysis.答案list = analysis.答案list.OrderBy(o => o.答案).ToList(); for (int i = 0; i < analysis.答案list.Count; i++) { int index = i + 6 + j; //if (dt2.Columns.Count <= index) if (dt2.Columns.Count <= index) { dt2.Columns.Add(new DataColumn("答案" + i, typeof(string))); dt2.Columns.Add(new DataColumn("答案" + i + "人数", typeof(int))); dt2.Columns.Add(new DataColumn("参与" + i + "人数", typeof(int))); dt2.Columns.Add(new DataColumn("比例" + i, typeof(string))); } string daan = ""; var tm = topList.Find(o => o.ID == analysis.题号); if (tm != null && analysis.答案list[i].答案 == "A") { daan = tm.A; } else if (tm != null && analysis.答案list[i].答案 == "B") { daan = tm.B; } else if (tm != null && analysis.答案list[i].答案 == "C") { daan = tm.C; } else if (tm != null && analysis.答案list[i].答案 == "D") { daan = tm.D; } else { daan = analysis.答案list[i].答案; } dr[index] = daan; dr[index + 1] = analysis.答案list[i].答案统计; dr[index + 2] = analysis.答案list[i].总人数; dr[index + 3] = Math.Round(analysis.答案list[i].比例, 2) + "%"; j = j + 3; } dt2.Rows.Add(dr); } } Tool.DataTableToExcel(dt2, "按学校统计结果" + DateTime.Now + ".xlsx"); } } protected void Button7_Click(object sender, EventArgs e) { List ansers = BLL.UserBll.GetAnswerskq(); var topList = BLL.UserBll.GetTopicskq(); if (ansers != null && ansers.Count > 0) { DataTable dt = new DataTable(); dt.Columns.AddRange(new DataColumn[]{ new DataColumn("类别",typeof(string)), new DataColumn("学校名称",typeof(string)), new DataColumn("姓名",typeof(string)), new DataColumn("手机",typeof(string)), new DataColumn("题号",typeof(string)), new DataColumn("题目",typeof(string)), new DataColumn("答案",typeof(string)) }); DataRow dr = null; foreach (var ans in ansers) { var result = Quiz.Utility.XmlSerializer.Deserialize(ans.Keys); if (result != null) { foreach (var reskey in result.KeyList) { dr = dt.NewRow(); dr["类别"] = Enum.GetName(typeof(UserTypeEnum), ans.UserType); dr["学校名称"] = ans.SchoolName; dr["姓名"] = ans.StudentName; dr["手机"] = ans.PhoneName; if (reskey.TopicId == 0) reskey.TopicId = 12; dr["题号"] = reskey.TopicId; dr["题目"] = topList.Find(o => o.ID == reskey.TopicId).Question; dr["答案"] = reskey.Keys; dt.Rows.Add(dr); } } } var list = ModelConstructor.CreateModelList(dt); var analysislist = new List(); var groups = list.GroupBy(o => o.类别); foreach (IGrouping g in groups) { var s = g.GroupBy(o => o.题号); foreach (IGrouping item in s)//每个类别分组 { var templist = item.ToList(); var xxx = new ZdyAnswerAnalysis() { 类别 = templist[0].类别, //学校名称 = templist[0].学校名称, 题号 = templist[0].题号, 题目 = templist[0].题目, 答案list = new List() }; var answers = item.GroupBy(o => o.答案); foreach (var answer in answers) { var templist2 = answer.ToList(); xxx.答案list.Add(new ZdyAnswerAnalysisItem() { 答案 = templist2[0].答案, 答案统计 = templist2.Count, 总人数 = templist.Count }); } analysislist.Add(xxx); } } DataTable dt2 = new DataTable(); dt2.Columns.AddRange(new DataColumn[]{ new DataColumn("类别",typeof(string)), //new DataColumn("学校名称",typeof(string)), new DataColumn("题号",typeof(string)), new DataColumn("题目",typeof(string)), //new DataColumn("A",typeof(string)), //new DataColumn("B",typeof(string)), //new DataColumn("C",typeof(string)), //new DataColumn("D",typeof(string)) }); foreach (var analysis in analysislist) { if (analysis.题号 != 11 && analysis.题号 != 13) { dr = dt2.NewRow(); dr["类别"] = analysis.类别; //dr["学校名称"] = analysis.学校名称; dr["题号"] = analysis.题号; dr["题目"] = analysis.题目; int j = 0; for (int i = 0; i < analysis.答案list.Count; i++) { int index = i + 3 + j; if (dt2.Columns.Count <= index) { dt2.Columns.Add(new DataColumn("答案" + i, typeof(string))); dt2.Columns.Add(new DataColumn("比例" + i, typeof(string))); } string daan = ""; var tm = topList.Find(o => o.ID == analysis.题号); if (tm != null && analysis.答案list[i].答案 == "A") { daan = tm.A; } else if (tm != null && analysis.答案list[i].答案 == "B") { daan = tm.B; } else if (tm != null && analysis.答案list[i].答案 == "C") { daan = tm.C; } else if (tm != null && analysis.答案list[i].答案 == "D") { daan = tm.D; } else { daan = analysis.答案list[i].答案; } dr[index] = daan + "(" + analysis.答案list[i].答案统计 + "/" + analysis.答案list[i].总人数 + ")"; dr[index + 1] = Math.Round(analysis.答案list[i].比例, 2) + "%"; j++; } dt2.Rows.Add(dr); } } Tool.DataTableToExcel(dt2, "总体统计结果" + DateTime.Now + ".xlsx"); } } protected void Button8_Click(object sender, EventArgs e) { List ansers = BLL.UserBll.GetAnswerskq(); var topList = BLL.UserBll.GetTopicskq(); var userList = BLL.UserBll.GetUserskq(); if (ansers != null && ansers.Count > 0) { DataTable dt = new DataTable(); dt.Columns.AddRange(new DataColumn[]{ new DataColumn("类别",typeof(string)), new DataColumn("学校类型",typeof(string)), new DataColumn("学校名称",typeof(string)), new DataColumn("班级名称",typeof(string)), new DataColumn("姓名",typeof(string)), new DataColumn("手机",typeof(string)), new DataColumn("题号",typeof(string)), new DataColumn("题目",typeof(string)), new DataColumn("答案",typeof(string)) }); DataRow dr = null; foreach (var ans in ansers) { var result = Quiz.Utility.XmlSerializer.Deserialize(ans.Keys); if (result != null) { foreach (var reskey in result.KeyList) { dr = dt.NewRow(); dr["类别"] = Enum.GetName(typeof(UserTypeEnum), ans.UserType); dr["学校类型"] = ans.schoolType; dr["学校名称"] = ans.SchoolName; dr["班级名称"] = ans.ClassName; dr["姓名"] = ans.StudentName; dr["手机"] = ans.PhoneName; dr["题号"] = reskey.TopicId; if (reskey.TopicId == 0) reskey.TopicId = 12; dr["题目"] = topList.Find(o => o.ID == reskey.TopicId).Question; dr["答案"] = reskey.Keys; dt.Rows.Add(dr); } } } var list = ModelConstructor.CreateModelList(dt); //var analysislist = new List(); //var groups = list.GroupBy(o => o.学校名称); //foreach (IGrouping g in groups) //{ // var s = g.GroupBy(o => o.题号); // foreach (IGrouping item in s)//每个题目分组 // { // var templist = item.ToList(); // var xxx = new ZdyAnswerAnalysis() // { // 类别 = templist[0].类别, // 学校名称 = templist[0].学校名称, // 题号 = templist[0].题号, // 题目 = templist[0].题目, // 答案list = new List() // }; // var answers = item.GroupBy(o => o.答案); // foreach (var answer in answers) // { // var templist2 = answer.ToList(); // xxx.答案list.Add(new ZdyAnswerAnalysisItem() // { // 答案 = templist2[0].答案, // 答案统计 = templist2.Count, // 总人数 = templist.Count // }); // } // analysislist.Add(xxx); // } //} var analysislist = new List(); var groupsleibie = list.GroupBy(o => o.类别); foreach (IGrouping group in groupsleibie) { var ss = group.ToList(); var groups = ss.GroupBy(o => o.学校名称).ToList(); foreach (IGrouping g in groups) { var analysis2 = g.ToList(); var classN = g.GroupBy(o => o.班级名称); foreach (IGrouping c in classN)//班级 { var schools = new ZdyAnswerAnalysis2 { 类别 = ss[0].类别, 学校名称 = analysis2[0].学校名称, 学校类型 = analysis2[0].学校类型, 班级名称 = analysis2[0].班级名称 }; var analysis3 = c.ToList(); schools.班级名称 = analysis3[0].班级名称; schools.题目list = new List(); var timu = c.GroupBy(o => o.题号); foreach (IGrouping tm in timu) { var tm2 = tm.ToList(); schools.总数 = tm2.Count.ToString(); var tmschool = new ZdyAnswerAnalysisQuestion { 题号 = tm2[0].题号, 题目 = tm2[0].题目 }; schools.题目list.Add(tmschool); tmschool.答案list = new List(); var answers = tm.GroupBy(o => o.答案); foreach (var anser in answers) { var ans = anser.ToList(); tmschool.答案list.Add(new ZdyAnswerAnalysisItem { 答案 = ans[0].答案, 答案统计 = ans.Count, 总人数 = tm2.Count }); } } analysislist.Add(schools); //} }//end 构造的新list } DataTable dt2 = new DataTable(); dt2.Columns.AddRange(new DataColumn[]{ new DataColumn("类别",typeof(string)), new DataColumn("学校类型",typeof(string)), new DataColumn("学校名称",typeof(string)), new DataColumn("班级名称",typeof(string)), new DataColumn("班级总人数",typeof(int)), new DataColumn("班级回收数",typeof(string)), //new DataColumn("班级回收率",typeof(string)), //new DataColumn("校风校纪(%)",typeof(string)), new DataColumn("校风校纪(满意)",typeof(int)), new DataColumn("校风校纪(较满意)",typeof(int)), new DataColumn("校风校纪(不满意)",typeof(int)), new DataColumn("校风校纪(不了解)",typeof(int)), new DataColumn("规范收费(满意)",typeof(int)), new DataColumn("规范收费(较满意)",typeof(int)), new DataColumn("规范收费(不满意)",typeof(int)), new DataColumn("规范收费(不了解)",typeof(int)), new DataColumn("教学质量(满意)",typeof(int)), new DataColumn("教学质量(较满意)",typeof(int)), new DataColumn("教学质量(不满意)",typeof(int)), new DataColumn("教学质量(不了解)",typeof(int)), new DataColumn("师德师风(满意)",typeof(int)), new DataColumn("师德师风(较满意)",typeof(int)), new DataColumn("师德师风(不满意)",typeof(int)), new DataColumn("师德师风(不了解)",typeof(int)), new DataColumn("作业负担(满意)",typeof(int)), new DataColumn("作业负担(较满意)",typeof(int)), new DataColumn("作业负担(不满意)",typeof(int)), new DataColumn("作业负担(不了解)",typeof(int)), new DataColumn("家访联系(满意)",typeof(int)), new DataColumn("家访联系(较满意)",typeof(int)), new DataColumn("家访联系(不满意)",typeof(int)), new DataColumn("家访联系(不了解)",typeof(int)), new DataColumn("食堂质量(满意)",typeof(int)), new DataColumn("食堂质量(较满意)",typeof(int)), new DataColumn("食堂质量(不满意)",typeof(int)), new DataColumn("食堂质量(不了解)",typeof(int)), new DataColumn("廉洁从教(满意)",typeof(int)), new DataColumn("廉洁从教(较满意)",typeof(int)), new DataColumn("廉洁从教(不满意)",typeof(int)), new DataColumn("廉洁从教(不了解)",typeof(int)), new DataColumn("有偿补课(满意)",typeof(int)), new DataColumn("有偿补课(较满意)",typeof(int)), new DataColumn("有偿补课(不满意)",typeof(int)), new DataColumn("有偿补课(不了解)",typeof(int)), new DataColumn("总体评价(满意)",typeof(int)), new DataColumn("总体评价(较满意)",typeof(int)), new DataColumn("总体评价(不满意)",typeof(int)), new DataColumn("总体评价(不了解)",typeof(int)), }); foreach (var analysis in analysislist) { dr = dt2.NewRow(); dr["类别"] = analysis.类别; dr["学校类型"] = analysis.学校类型; dr["学校名称"] = analysis.学校名称; dr["班级名称"] = analysis.班级名称; var cont = userList.Count(o => o.SchoolName == analysis.学校名称 && o.UserType == 0 && o.ClassName == analysis.班级名称); dr["班级总人数"] = cont; dr["班级回收数"] = analysis.总数; //dr["班级回收率"] = (float.Parse(analysis.总数)/ cont*100).ToString("#0.00") +"%"; string next = ""; for (int i = 0; i < analysis.题目list.Count; i++) { int ssa1 = 0; var s = ""; string jg = ""; if (analysis.题目list[i].题号 != 11 && analysis.题目list[i].题号 != 13) { for (int j = 0; j < analysis.题目list[i].答案list.Count; j++) { var d = analysis.题目list[i].答案list[j].答案统计; int dn = int.Parse(d.ToString()); //if (string.IsNullOrEmpty(d.ToString())) dn = 0; //if (next != s) ssa1 = 0; switch (analysis.题目list[i].题目 + ":" + analysis.题目list[i].答案list[j].答案) { //case "您对班级教师、阿姨照顾幼儿生活方面的评价:A": // dr["照顾幼儿(仔细)"] = analysis.题目list[i].答案list[j].答案统计; // break; //case "您对班级教师、阿姨照顾幼儿生活方面的评价:B": // dr["照顾幼儿(较仔细)"] = analysis.题目list[i].答案list[j].答案统计; break; //case "您对班级教师、阿姨照顾幼儿生活方面的评价:C": // dr["照顾幼儿(不仔细)"] = analysis.题目list[i].答案list[j].答案统计; break; //case "学校有严格的校纪校风与良好校容校貌。:D": // dr["校纪校风(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; case "学校有严格的校纪校风与良好校容校貌。:A": dr["校风校纪(满意)"] = dn; //s = "校风校纪(%)"; //ssa1+= dn; //jg=((ssa1*0.8/int.Parse(analysis.总数))*100).ToString("#0.00") + "%"; break; case "学校有严格的校纪校风与良好校容校貌。:B": dr["校风校纪(较满意)"] = dn; /*s = "校风校纪(%)" ;ssa1 += dn;*/ //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "学校有严格的校纪校风与良好校容校貌。:C": dr["校风校纪(不满意)"] = dn; /*s = "校风校纪(%)"; */break; case "学校有严格的校纪校风与良好校容校貌。:D": dr["校风校纪(不了解)"] = dn; break; case "严格执行教育收费规定,无乱收费行为。:A": dr["规范收费(满意)"] = dn; /*s = "规范收费(%)";*/ //ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "严格执行教育收费规定,无乱收费行为。:B": dr["规范收费(较满意)"] = dn; /*s = "规范收费(%)";*/ //ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "严格执行教育收费规定,无乱收费行为。:C": dr["规范收费(不满意)"] = dn;/* s = "规范收费(%)"; */break; case "严格执行教育收费规定,无乱收费行为。:D": dr["规范收费(不了解)"] = dn; break; case "从严规范教育教学工作,教学质量稳步提升。:A": dr["教学质量(满意)"] = dn;/* s = "教学质量(%)";*/ //ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "从严规范教育教学工作,教学质量稳步提升。:B": dr["教学质量(较满意)"] = dn; /*s = "教学质量(%)";*/ //ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "从严规范教育教学工作,教学质量稳步提升。:C": dr["教学质量(不满意)"] = dn; /*s = "教学质量(%)"; */break; case "从严规范教育教学工作,教学质量稳步提升。:D": dr["教学质量(不了解)"] = dn; break; case "老师注重对学生的思想教育和良好行为习惯的培养,无体罚或变相体罚学生行为。:A": dr["师德师风(满意)"] = dn;/* s = "师德师风(%)*/ // ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "老师注重对学生的思想教育和良好行为习惯的培养,无体罚或变相体罚学生行为。:B": dr["师德师风(较满意)"] = dn; s = "师德师风(%)"; //ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "老师注重对学生的思想教育和良好行为习惯的培养,无体罚或变相体罚学生行为。:C": dr["师德师风(不满意)"] = dn; break;// s = "师德师风(%)"; case "老师注重对学生的思想教育和良好行为习惯的培养,无体罚或变相体罚学生行为。:D": dr["师德师风(不了解)"] = dn; break; case "中小学校教师能科学布置学生课内外作业,作业量适中,能按时批改;幼儿教师能做到细心周到,轻松教学。:A": dr["作业负担(满意)"] = dn; //s = "家访联系(%)"; //ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "中小学校教师能科学布置学生课内外作业,作业量适中,能按时批改;幼儿教师能做到细心周到,轻松教学。:B": dr["作业负担(较满意)"] = dn; //s = "家访联系(%)"; // ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "中小学校教师能科学布置学生课内外作业,作业量适中,能按时批改;幼儿教师能做到细心周到,轻松教学。:C": dr["作业负担(不满意)"] = dn; break;//s = "家访联系(%)"; case "中小学校教师能科学布置学生课内外作业,作业量适中,能按时批改;幼儿教师能做到细心周到,轻松教学。:D": dr["作业负担(不了解)"] = dn; break; case "学校不统一组织或变相要求额外订购书刊及教辅用书,不组织或推荐学生参与有偿补课和其他有偿培训活动。:A": dr["有偿补课(满意)"] = dn; //s = "食堂质量(%)"; // ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; ; break; case "学校不统一组织或变相要求额外订购书刊及教辅用书,不组织或推荐学生参与有偿补课和其他有偿培训活动。:B": dr["有偿补课(较满意)"] = dn; //s = "食堂质量(%)"; //ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "学校不统一组织或变相要求额外订购书刊及教辅用书,不组织或推荐学生参与有偿补课和其他有偿培训活动。:C": dr["有偿补课(不满意)"] = dn; break;// s = "食堂质量(%)"; case "学校不统一组织或变相要求额外订购书刊及教辅用书,不组织或推荐学生参与有偿补课和其他有偿培训活动。:D": dr["食堂质量(不了解)"] = dn; break; case "学校食堂收费合理,饭菜卫生量足价廉,按时公布食谱。:A": dr["食堂质量(满意)"] = dn; // = "作业负担(%)"; //ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "学校食堂收费合理,饭菜卫生量足价廉,按时公布食谱。:B": dr["食堂质量(较满意)"] = dn; //s = "作业负担(%)"; // ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "学校食堂收费合理,饭菜卫生量足价廉,按时公布食谱。:C": dr["食堂质量(不满意)"] = dn; break;//s = "作业负担(%)"; case "学校食堂收费合理,饭菜卫生量足价廉,按时公布食谱。:D": dr["食堂质量(不了解)"] = dn; break; case "教师廉洁从教,不收受家长礼物或接受家长宴请。:A": dr["廉洁从教(满意)"] = dn; //s = "教师有偿家教(%)"; // ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "教师廉洁从教,不收受家长礼物或接受家长宴请。:B": dr["廉洁从教(较满意)"] = dn; //s = "教师有偿家教(%)"; // ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "教师廉洁从教,不收受家长礼物或接受家长宴请。:C": dr["廉洁从教(不满意)"] = dn; break;//s = "教师有偿家教(%)"; case "教师廉洁从教,不收受家长礼物或接受家长宴请。:D": dr["廉洁从教(不了解)"] = dn; break; case "能定期召开家长会或上门家访,与家长进行多种形式的沟通。:A": dr["家访联系(满意)"] = dn; break; // s = "教师收受礼品礼金、接受宴请等(%)"; ///ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; case "能定期召开家长会或上门家访,与家长进行多种形式的沟通。:B": dr["家访联系(较满意)"] = dn; // s = "教师收受礼品礼金、接受宴请等(%)"; // ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "能定期召开家长会或上门家访,与家长进行多种形式的沟通。:C": dr["家访联系(不满意)"] = dn; //s = "教师收受礼品礼金、接受宴请等(%)"; break; case "能定期召开家长会或上门家访,与家长进行多种形式的沟通。:D": dr["家访联系(不了解)"] = dn; //s = "教师收受礼品礼金、接受宴请等(%)"; break; case "您对学校教育管理总体评价。:A": dr["总体评价(满意)"] = dn; // s = "总体评价(%)"; // ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "您对学校教育管理总体评价。:B": dr["总体评价(较满意)"] = dn; //s = "总体评价(%)"; // ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "您对学校教育管理总体评价。:C": dr["总体评价(不满意)"] = dn; //s = "总体评价(%)"; break; case "您对学校教育管理总体评价。:D": dr["总体评价(不了解)"] = dn; break; } //if (!string.IsNullOrEmpty(s)) //{ // dr[s] = jg; // next = s; //} } } } dt2.Rows.Add(dr); } //var s = dt2; Tool.DataTableToExcel(dt2, "按学校班级统计结果格式版" + DateTime.Now + ".xlsx"); } } } /// /// 按学校格式版 /// /// /// protected void Button14_Click(object sender, EventArgs e) { List ansers = BLL.UserBll.GetAnswerskq(); var topList = BLL.UserBll.GetTopicskq(); var userList = BLL.UserBll.GetUserskq(); if (ansers != null && ansers.Count > 0) { DataTable dt = new DataTable(); dt.Columns.AddRange(new DataColumn[]{ new DataColumn("类别",typeof(string)), new DataColumn("学校类型",typeof(string)), new DataColumn("学校名称",typeof(string)), new DataColumn("班级名称",typeof(string)), new DataColumn("姓名",typeof(string)), new DataColumn("手机",typeof(string)), new DataColumn("题号",typeof(string)), new DataColumn("题目",typeof(string)), new DataColumn("答案",typeof(string)) }); DataRow dr = null; foreach (var ans in ansers) { var result = Quiz.Utility.XmlSerializer.Deserialize(ans.Keys); if (result != null) { foreach (var reskey in result.KeyList) { dr = dt.NewRow(); dr["类别"] = Enum.GetName(typeof(UserTypeEnum), ans.UserType); dr["学校类型"] = ans.schoolType; dr["学校名称"] = ans.SchoolName; dr["班级名称"] = ans.ClassName; dr["姓名"] = ans.StudentName; dr["手机"] = ans.PhoneName; dr["题号"] = reskey.TopicId; if (reskey.TopicId == 0) reskey.TopicId = 12; dr["题目"] = topList.Find(o => o.ID == reskey.TopicId).Question; dr["答案"] = reskey.Keys; dt.Rows.Add(dr); } } } var list = ModelConstructor.CreateModelList(dt); //var analysislist = new List(); //var groups = list.GroupBy(o => o.学校名称); //foreach (IGrouping g in groups) //{ // var s = g.GroupBy(o => o.题号); // foreach (IGrouping item in s)//每个题目分组 // { // var templist = item.ToList(); // var xxx = new ZdyAnswerAnalysis() // { // 类别 = templist[0].类别, // 学校名称 = templist[0].学校名称, // 题号 = templist[0].题号, // 题目 = templist[0].题目, // 答案list = new List() // }; // var answers = item.GroupBy(o => o.答案); // foreach (var answer in answers) // { // var templist2 = answer.ToList(); // xxx.答案list.Add(new ZdyAnswerAnalysisItem() // { // 答案 = templist2[0].答案, // 答案统计 = templist2.Count, // 总人数 = templist.Count // }); // } // analysislist.Add(xxx); // } //} var analysislist = new List(); var groupsleibie = list.GroupBy(o => o.类别); foreach (IGrouping group in groupsleibie) { var ss = group.ToList(); var groups = ss.GroupBy(o => o.学校名称).ToList(); foreach (IGrouping g in groups) { var analysis2 = g.ToList(); // var classN = g.GroupBy(o => o.班级名称); // foreach (IGrouping c in classN)//班级 // { var schools = new ZdyAnswerAnalysis2 { 类别 = ss[0].类别, 学校名称 = analysis2[0].学校名称, 学校类型 = analysis2[0].学校类型, 班级名称 = analysis2[0].班级名称 }; var analysis3 = g.ToList(); // schools.班级名称 = analysis3[0].班级名称; schools.题目list = new List(); var timu = g.GroupBy(o => o.题号); foreach (IGrouping tm in timu) { var tm2 = tm.ToList(); schools.总数 = tm2.Count.ToString(); var tmschool = new ZdyAnswerAnalysisQuestion { 题号 = tm2[0].题号, 题目 = tm2[0].题目 }; schools.题目list.Add(tmschool); tmschool.答案list = new List(); var answers = tm.GroupBy(o => o.答案); foreach (var anser in answers) { var ans = anser.ToList(); tmschool.答案list.Add(new ZdyAnswerAnalysisItem { 答案 = ans[0].答案, 答案统计 = ans.Count, 总人数 = tm2.Count }); } // } //} }//end 构造的新list analysislist.Add(schools); } DataTable dt2 = new DataTable(); dt2.Columns.AddRange(new DataColumn[]{ new DataColumn("类别",typeof(string)), new DataColumn("学校类型",typeof(string)), new DataColumn("学校名称",typeof(string)), //new DataColumn("班级名称",typeof(string)), new DataColumn("学校总人数",typeof(int)), new DataColumn("学校回收数",typeof(string)), //new DataColumn("班级回收率",typeof(string)), //new DataColumn("校风校纪(%)",typeof(string)), new DataColumn("校风校纪(满意)",typeof(int)), new DataColumn("校风校纪(较满意)",typeof(int)), new DataColumn("校风校纪(不满意)",typeof(int)), new DataColumn("校风校纪(不了解)",typeof(int)), new DataColumn("规范收费(满意)",typeof(int)), new DataColumn("规范收费(较满意)",typeof(int)), new DataColumn("规范收费(不满意)",typeof(int)), new DataColumn("规范收费(不了解)",typeof(int)), new DataColumn("教学质量(满意)",typeof(int)), new DataColumn("教学质量(较满意)",typeof(int)), new DataColumn("教学质量(不满意)",typeof(int)), new DataColumn("教学质量(不了解)",typeof(int)), new DataColumn("师德师风(满意)",typeof(int)), new DataColumn("师德师风(较满意)",typeof(int)), new DataColumn("师德师风(不满意)",typeof(int)), new DataColumn("师德师风(不了解)",typeof(int)), new DataColumn("作业负担(满意)",typeof(int)), new DataColumn("作业负担(较满意)",typeof(int)), new DataColumn("作业负担(不满意)",typeof(int)), new DataColumn("作业负担(不了解)",typeof(int)), new DataColumn("家访联系(满意)",typeof(int)), new DataColumn("家访联系(较满意)",typeof(int)), new DataColumn("家访联系(不满意)",typeof(int)), new DataColumn("家访联系(不了解)",typeof(int)), new DataColumn("食堂质量(满意)",typeof(int)), new DataColumn("食堂质量(较满意)",typeof(int)), new DataColumn("食堂质量(不满意)",typeof(int)), new DataColumn("食堂质量(不了解)",typeof(int)), new DataColumn("廉洁从教(满意)",typeof(int)), new DataColumn("廉洁从教(较满意)",typeof(int)), new DataColumn("廉洁从教(不满意)",typeof(int)), new DataColumn("廉洁从教(不了解)",typeof(int)), new DataColumn("有偿补课(满意)",typeof(int)), new DataColumn("有偿补课(较满意)",typeof(int)), new DataColumn("有偿补课(不满意)",typeof(int)), new DataColumn("有偿补课(不了解)",typeof(int)), new DataColumn("总体评价(满意)",typeof(int)), new DataColumn("总体评价(较满意)",typeof(int)), new DataColumn("总体评价(不满意)",typeof(int)), new DataColumn("总体评价(不了解)",typeof(int)), }); foreach (var analysis in analysislist) { dr = dt2.NewRow(); dr["类别"] = analysis.类别; dr["学校类型"] = analysis.学校类型; dr["学校名称"] = analysis.学校名称; // dr["班级名称"] = analysis.班级名称; var cont = userList.Count(o => o.SchoolName == analysis.学校名称 && o.UserType == 0 ); dr["学校总人数"] = cont; dr["学校回收数"] = analysis.总数; //dr["班级回收率"] = (float.Parse(analysis.总数)/ cont*100).ToString("#0.00") +"%"; string next = ""; for (int i = 0; i < analysis.题目list.Count; i++) { int ssa1 = 0; var s = ""; string jg = ""; if (analysis.题目list[i].题号 != 11 && analysis.题目list[i].题号 != 13) { for (int j = 0; j < analysis.题目list[i].答案list.Count; j++) { var d = analysis.题目list[i].答案list[j].答案统计; int dn = int.Parse(d.ToString()); //if (string.IsNullOrEmpty(d.ToString())) dn = 0; //if (next != s) ssa1 = 0; switch (analysis.题目list[i].题目 + ":" + analysis.题目list[i].答案list[j].答案) { //case "您对班级教师、阿姨照顾幼儿生活方面的评价:A": // dr["照顾幼儿(仔细)"] = analysis.题目list[i].答案list[j].答案统计; // break; //case "您对班级教师、阿姨照顾幼儿生活方面的评价:B": // dr["照顾幼儿(较仔细)"] = analysis.题目list[i].答案list[j].答案统计; break; //case "您对班级教师、阿姨照顾幼儿生活方面的评价:C": // dr["照顾幼儿(不仔细)"] = analysis.题目list[i].答案list[j].答案统计; break; //case "学校有严格的校纪校风与良好校容校貌。:D": // dr["校纪校风(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; case "学校有严格的校纪校风与良好校容校貌。:A": dr["校风校纪(满意)"] = dn; //s = "校风校纪(%)"; //ssa1+= dn; //jg=((ssa1*0.8/int.Parse(analysis.总数))*100).ToString("#0.00") + "%"; break; case "学校有严格的校纪校风与良好校容校貌。:B": dr["校风校纪(较满意)"] = dn; /*s = "校风校纪(%)" ;ssa1 += dn;*/ //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "学校有严格的校纪校风与良好校容校貌。:C": dr["校风校纪(不满意)"] = dn; /*s = "校风校纪(%)"; */break; case "学校有严格的校纪校风与良好校容校貌。:D": dr["校风校纪(不了解)"] = dn; break; case "严格执行教育收费规定,无乱收费行为。:A": dr["规范收费(满意)"] = dn; /*s = "规范收费(%)";*/ //ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "严格执行教育收费规定,无乱收费行为。:B": dr["规范收费(较满意)"] = dn; /*s = "规范收费(%)";*/ //ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "严格执行教育收费规定,无乱收费行为。:C": dr["规范收费(不满意)"] = dn;/* s = "规范收费(%)"; */break; case "严格执行教育收费规定,无乱收费行为。:D": dr["规范收费(不了解)"] = dn; break; case "从严规范教育教学工作,教学质量稳步提升。:A": dr["教学质量(满意)"] = dn;/* s = "教学质量(%)";*/ //ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "从严规范教育教学工作,教学质量稳步提升。:B": dr["教学质量(较满意)"] = dn; /*s = "教学质量(%)";*/ //ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "从严规范教育教学工作,教学质量稳步提升。:C": dr["教学质量(不满意)"] = dn; /*s = "教学质量(%)"; */break; case "从严规范教育教学工作,教学质量稳步提升。:D": dr["教学质量(不了解)"] = dn; break; case "老师注重对学生的思想教育和良好行为习惯的培养,无体罚或变相体罚学生行为。:A": dr["师德师风(满意)"] = dn;/* s = "师德师风(%)*/ // ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "老师注重对学生的思想教育和良好行为习惯的培养,无体罚或变相体罚学生行为。:B": dr["师德师风(较满意)"] = dn; s = "师德师风(%)"; //ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "老师注重对学生的思想教育和良好行为习惯的培养,无体罚或变相体罚学生行为。:C": dr["师德师风(不满意)"] = dn; break;// s = "师德师风(%)"; case "老师注重对学生的思想教育和良好行为习惯的培养,无体罚或变相体罚学生行为。:D": dr["师德师风(不了解)"] = dn; break; case "中小学校教师能科学布置学生课内外作业,作业量适中,能按时批改;幼儿教师能做到细心周到,轻松教学。:A": dr["作业负担(满意)"] = dn; //s = "家访联系(%)"; //ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "中小学校教师能科学布置学生课内外作业,作业量适中,能按时批改;幼儿教师能做到细心周到,轻松教学。:B": dr["作业负担(较满意)"] = dn; //s = "家访联系(%)"; // ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "中小学校教师能科学布置学生课内外作业,作业量适中,能按时批改;幼儿教师能做到细心周到,轻松教学。:C": dr["作业负担(不满意)"] = dn; break;//s = "家访联系(%)"; case "中小学校教师能科学布置学生课内外作业,作业量适中,能按时批改;幼儿教师能做到细心周到,轻松教学。:D": dr["作业负担(不了解)"] = dn; break; case "学校不统一组织或变相要求额外订购书刊及教辅用书,不组织或推荐学生参与有偿补课和其他有偿培训活动。:A": dr["有偿补课(满意)"] = dn; //s = "食堂质量(%)"; // ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; ; break; case "学校不统一组织或变相要求额外订购书刊及教辅用书,不组织或推荐学生参与有偿补课和其他有偿培训活动。:B": dr["有偿补课(较满意)"] = dn; //s = "食堂质量(%)"; //ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "学校不统一组织或变相要求额外订购书刊及教辅用书,不组织或推荐学生参与有偿补课和其他有偿培训活动。:C": dr["有偿补课(不满意)"] = dn; break;// s = "食堂质量(%)"; case "学校不统一组织或变相要求额外订购书刊及教辅用书,不组织或推荐学生参与有偿补课和其他有偿培训活动。:D": dr["有偿补课(不了解)"] = dn; break; case "学校食堂收费合理,饭菜卫生量足价廉,按时公布食谱。:A": dr["食堂质量(满意)"] = dn; // = "作业负担(%)"; //ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "学校食堂收费合理,饭菜卫生量足价廉,按时公布食谱。:B": dr["食堂质量(较满意)"] = dn; //s = "作业负担(%)"; // ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "学校食堂收费合理,饭菜卫生量足价廉,按时公布食谱。:C": dr["食堂质量(不满意)"] = dn; break;//s = "作业负担(%)"; case "学校食堂收费合理,饭菜卫生量足价廉,按时公布食谱。:D": dr["食堂质量(不了解)"] = dn; break; case "教师廉洁从教,不收受家长礼物或接受家长宴请。:A": dr["廉洁从教(满意)"] = dn; //s = "教师有偿家教(%)"; // ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "教师廉洁从教,不收受家长礼物或接受家长宴请。:B": dr["廉洁从教(较满意)"] = dn; //s = "教师有偿家教(%)"; // ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "教师廉洁从教,不收受家长礼物或接受家长宴请。:C": dr["廉洁从教(不满意)"] = dn; break;//s = "教师有偿家教(%)"; case "教师廉洁从教,不收受家长礼物或接受家长宴请。:D": dr["廉洁从教(不了解)"] = dn; break; case "能定期召开家长会或上门家访,与家长进行多种形式的沟通。:A": dr["家访联系(满意)"] = dn; break; // s = "教师收受礼品礼金、接受宴请等(%)"; ///ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; case "能定期召开家长会或上门家访,与家长进行多种形式的沟通。:B": dr["家访联系(较满意)"] = dn; // s = "教师收受礼品礼金、接受宴请等(%)"; // ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "能定期召开家长会或上门家访,与家长进行多种形式的沟通。:C": dr["家访联系(不满意)"] = dn; //s = "教师收受礼品礼金、接受宴请等(%)"; break; case "能定期召开家长会或上门家访,与家长进行多种形式的沟通。:D": dr["家访联系(不了解)"] = dn; //s = "教师收受礼品礼金、接受宴请等(%)"; break; case "您对学校教育管理总体评价。:A": dr["总体评价(满意)"] = dn; // s = "总体评价(%)"; // ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "您对学校教育管理总体评价。:B": dr["总体评价(较满意)"] = dn; //s = "总体评价(%)"; // ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "您对学校教育管理总体评价。:C": dr["总体评价(不满意)"] = dn; //s = "总体评价(%)"; break; case "您对学校教育管理总体评价。:D": dr["总体评价(不了解)"] = dn; break; //case "您对学校教育管理总体评价。:D": // dr["总体评价(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; } //if (!string.IsNullOrEmpty(s)) //{ // dr[s] = jg; // next = s; //} } } } dt2.Rows.Add(dr); } //var s = dt2; Tool.DataTableToExcel(dt2, "按学校统计结果格式版" + DateTime.Now + ".xlsx"); } } } #endregion #region 越城 protected void Button9_Click(object sender, EventArgs e) { List ansers = BLL.UserBll.GetAnswersyc(); var topList = BLL.UserBll.GetTopicsyc(); var schoolMB = BLL.UserBll.getschoolMB(); var getR = BLL.UserBll.GetUsersycTwo(); if (ansers != null && ansers.Count > 0) { DataTable dt = new DataTable(); dt.Columns.AddRange(new DataColumn[]{ new DataColumn("类别",typeof(string)), new DataColumn("学校区域",typeof(string)), new DataColumn("学校类型",typeof(string)), new DataColumn("学校名称",typeof(string)), new DataColumn("班级名称",typeof(string)), new DataColumn("姓名",typeof(string)), new DataColumn("父母姓名",typeof(string)), new DataColumn("手机",typeof(string)), new DataColumn("题号",typeof(string)), new DataColumn("题目",typeof(string)), new DataColumn("答案",typeof(string)) }); DataRow dr = null; foreach (var ans in ansers) { var result = Quiz.Utility.XmlSerializer.Deserialize(ans.Keys); if (result != null) { foreach (var reskey in result.KeyList) { dr = dt.NewRow(); var dd = dt.NewRow(); dr["类别"] = Enum.GetName(typeof(UserTypeEnum), ans.UserType); dr["学校区域"] = getR.Find(o => o.SchoolName == ans.SchoolName).region; if (schoolMB != null && schoolMB.Count > 0) { var get = schoolMB.Find(o => o.SchoolName == ans.SchoolName); if (get != null && !string.IsNullOrEmpty(get.SchoolName)) { dr["学校类型"] ="民办"+ ans.schoolType; } else dr["学校类型"] = "公办" + ans.schoolType; } else dr["学校类型"] = "公办" + ans.schoolType; dr["学校名称"] = ans.SchoolName; dr["班级名称"] = ans.ClassName; dr["姓名"] = ans.StudentName; dr["父母姓名"] = ans.ParentName; dr["手机"] = ans.PhoneName; if (reskey.TopicId == 10) { string dtate = "2019-11-21 14:20"; if (ans.Intime < DateTime.Parse(dtate) && reskey.Keys=="C") { reskey.Keys = "B"; } } if (reskey.TopicId == 7) { string dtate = "2019-11-21 15:30"; if (ans.Intime < DateTime.Parse(dtate) && reskey.Keys == "C") { reskey.Keys = "B"; } } if (reskey.TopicId == 0) { reskey.TopicId = 12; dr["题目"] = topList.Find(o => o.ID == reskey.TopicId).Question; var s = reskey.Keys; var ytt = s.ToString().Split(','); dr["答案"] = ytt[0]; dd["类别"] = Enum.GetName(typeof(UserTypeEnum), ans.UserType); dd["学校名称"] = ans.SchoolName; dd["班级名称"] = ans.ClassName; dd["姓名"] = ans.StudentName; dr["父母姓名"] = ans.ParentName; dd["手机"] = ans.PhoneName; dd["题目"] = "您的意见与建议:"; dd["题号"] = 13; dd["答案"] = ytt[1]; } else { dr["答案"] = reskey.Keys; } dr["题号"] = reskey.TopicId; dr["题目"] = topList.Find(o => o.ID == reskey.TopicId).Question; // dt.Rows.Add(dr); if (reskey.TopicId == 13 && result.KeyList.Count < 13) { dt.Rows.Add(dd); } } } } Tool.DataTableToExcel(dt, "明细结果" + DateTime.Now + ".xlsx"); } } protected void Button10_Click(object sender, EventArgs e) { List ansers = BLL.UserBll.GetAnswersyc(); var topList = BLL.UserBll.GetTopicsyc(); var schoolMB = BLL.UserBll.getschoolMB(); var userList = BLL.UserBll.GetUsersyc(); var getR = BLL.UserBll.GetUsersycTwo(); if (ansers != null && ansers.Count > 0) { DataTable dt = new DataTable(); dt.Columns.AddRange(new DataColumn[]{ new DataColumn("类别",typeof(string)), new DataColumn("学校区域",typeof(string)), new DataColumn("学校类型",typeof(string)), new DataColumn("学校名称",typeof(string)), new DataColumn("姓名",typeof(string)), new DataColumn("手机",typeof(string)), new DataColumn("题号",typeof(string)), new DataColumn("题目",typeof(string)), new DataColumn("答案",typeof(string)) }); DataRow dr = null; foreach (var ans in ansers) { var result = Quiz.Utility.XmlSerializer.Deserialize(ans.Keys);//题目 if (result != null) { foreach (var reskey in result.KeyList) { dr = dt.NewRow(); dr["类别"] = Enum.GetName(typeof(UserTypeEnum), ans.UserType); dr["学校区域"] = getR.Find(o => o.SchoolName == ans.SchoolName).region; if (schoolMB != null && schoolMB.Count > 0) { var get = schoolMB.Find(o => o.SchoolName == ans.SchoolName); if (get != null && !string.IsNullOrEmpty(get.SchoolName)) { dr["学校类型"] = "民办" + ans.schoolType; } else dr["学校类型"] = "公办" + ans.schoolType; } else dr["学校类型"] = "公办" + ans.schoolType; dr["学校名称"] = ans.SchoolName; dr["姓名"] = ans.StudentName; dr["手机"] = ans.PhoneName; if (reskey.TopicId == 0) reskey.TopicId = 12; dr["题号"] = reskey.TopicId; dr["题目"] = topList.Find(o => o.ID == reskey.TopicId).Question; if (reskey.TopicId == 10) { string dtate = "2019-11-21 14:20"; if (ans.Intime < DateTime.Parse(dtate) && reskey.Keys == "C") { reskey.Keys = "B"; } } if (reskey.TopicId == 7) { string dtate = "2019-11-21 15:30"; if (ans.Intime < DateTime.Parse(dtate) && reskey.Keys == "C") { reskey.Keys = "B"; } } dr["答案"] = reskey.Keys; dt.Rows.Add(dr); } } } var list = ModelConstructor.CreateModelList(dt);//所有题目 var analysislist = new List(); var groups = list.GroupBy(o => o.学校名称); foreach (IGrouping g in groups) { var s = g.GroupBy(o => o.题号); foreach (IGrouping item in s)//每个题目分组 { var templist = item.ToList(); var counts = userList.FindAll(o => o.SchoolName == templist[0].学校名称).Count; var xxx = new ZdyAnswerAnalysis() { 类别 = templist[0].类别, 学校类型 = templist[0].学校类型, 学校区域 = templist[0].学校区域, 学校名称 = templist[0].学校名称, 学校总人数 = userList.FindAll(o => o.SchoolName == templist[0].学校名称).Count, 题号 = templist[0].题号, 题目 = templist[0].题目, 答案list = new List() }; var answers = item.GroupBy(o => o.答案); foreach (var answer in answers) { var templist2 = answer.ToList(); xxx.答案list.Add(new ZdyAnswerAnalysisItem() { 答案 = templist2[0].答案, 答案统计 = templist2.Count, 总人数 = templist.Count }); } analysislist.Add(xxx); } } DataTable dt2 = new DataTable(); dt2.Columns.AddRange(new DataColumn[]{ new DataColumn("类别",typeof(string)), new DataColumn("学校区域",typeof(string)), new DataColumn("学校类型",typeof(string)), new DataColumn("学校名称",typeof(string)), new DataColumn("学校总数",typeof(int)), new DataColumn("题号",typeof(string)), new DataColumn("题目",typeof(string)) //new DataColumn("A",typeof(string)), //new DataColumn("B",typeof(string)), //new DataColumn("C",typeof(string)), //new DataColumn("D",typeof(string)) }); foreach (var analysis in analysislist) { if (analysis.题号 != 11 && analysis.题号 != 13) { dr = dt2.NewRow(); dr["类别"] = analysis.类别; dr["学校类型"] = analysis.学校类型; dr["学校区域"] = analysis.学校区域; dr["学校名称"] = analysis.学校名称; dr["学校总数"] = analysis.学校总人数; dr["题号"] = analysis.题号; dr["题目"] = analysis.题目; int j = 0; analysis.答案list = analysis.答案list.OrderBy(o => o.答案).ToList(); for (int i = 0; i < analysis.答案list.Count; i++) { int index = i + 7 + j; //if (dt2.Columns.Count <= index) if (dt2.Columns.Count <= index) { dt2.Columns.Add(new DataColumn("答案" + i, typeof(string))); dt2.Columns.Add(new DataColumn("答案" + i + "人数", typeof(int))); dt2.Columns.Add(new DataColumn("参与" + i + "人数", typeof(int))); dt2.Columns.Add(new DataColumn("比例" + i, typeof(string))); } string daan = ""; var tm = topList.Find(o => o.ID == analysis.题号); if (tm != null && analysis.答案list[i].答案 == "A") { daan = tm.A; } else if (tm != null && analysis.答案list[i].答案 == "B") { daan = tm.B; } else if (tm != null && analysis.答案list[i].答案 == "C") { daan = tm.C; } else if (tm != null && analysis.答案list[i].答案 == "D") { daan = tm.D; } else { daan = analysis.答案list[i].答案; } dr[index] = daan; dr[index + 1] = analysis.答案list[i].答案统计; dr[index + 2] = analysis.答案list[i].总人数; dr[index + 3] = Math.Round(analysis.答案list[i].比例, 2) + "%"; j = j + 3; } dt2.Rows.Add(dr); } } Tool.DataTableToExcel(dt2, "按学校统计结果" + DateTime.Now + ".xlsx"); } } protected void Button11_Click(object sender, EventArgs e) { List ansers = BLL.UserBll.GetAnswersyc(); var schoolMB = BLL.UserBll.getschoolMB(); var topList = BLL.UserBll.GetTopicsyc(); var getR = BLL.UserBll.GetUsersycTwo(); if (ansers != null && ansers.Count > 0) { DataTable dt = new DataTable(); dt.Columns.AddRange(new DataColumn[]{ new DataColumn("类别",typeof(string)), new DataColumn("学校区域",typeof(string)), new DataColumn("学校类型",typeof(string)), new DataColumn("学校名称",typeof(string)), new DataColumn("姓名",typeof(string)), new DataColumn("手机",typeof(string)), new DataColumn("题号",typeof(string)), new DataColumn("题目",typeof(string)), new DataColumn("答案",typeof(string)) }); DataRow dr = null; foreach (var ans in ansers) { var result = Quiz.Utility.XmlSerializer.Deserialize(ans.Keys); if (result != null) { foreach (var reskey in result.KeyList) { dr = dt.NewRow(); dr["类别"] = Enum.GetName(typeof(UserTypeEnum), ans.UserType); if (schoolMB != null && schoolMB.Count > 0) { var get = schoolMB.Find(o => o.SchoolName == ans.SchoolName); if (get != null && !string.IsNullOrEmpty(get.SchoolName)) { dr["学校类型"] = "民办" + ans.schoolType; } else dr["学校类型"] = "公办" + ans.schoolType; } else dr["学校类型"] = "公办" + ans.schoolType; dr["学校区域"] = getR.Find(o => o.SchoolName == ans.SchoolName).region; dr["学校名称"] = ans.SchoolName; dr["姓名"] = ans.StudentName; dr["手机"] = ans.PhoneName; if (reskey.TopicId == 0) reskey.TopicId = 12; dr["题号"] = reskey.TopicId; dr["题目"] = topList.Find(o => o.ID == reskey.TopicId).Question; if (reskey.TopicId == 10) { string dtate = "2019-11-21 14:20"; if (ans.Intime < DateTime.Parse(dtate) && reskey.Keys == "C") { reskey.Keys = "B"; } } if (reskey.TopicId == 7) { string dtate = "2019-11-21 15:30"; if (ans.Intime < DateTime.Parse(dtate) && reskey.Keys == "C") { reskey.Keys = "B"; } } dr["答案"] = reskey.Keys; dt.Rows.Add(dr); } } } var list = ModelConstructor.CreateModelList(dt); var analysislist = new List(); var groups = list.GroupBy(o => o.类别); foreach (IGrouping g in groups) { var s = g.GroupBy(o => o.题号); foreach (IGrouping item in s)//每个类别分组 { var templist = item.ToList(); var xxx = new ZdyAnswerAnalysis() { 类别 = templist[0].类别, 学校名称 = templist[0].学校名称, 学校区域=templist[0].学校区域, 题号 = templist[0].题号, 题目 = templist[0].题目, 答案list = new List() }; var answers = item.GroupBy(o => o.答案); foreach (var answer in answers) { var templist2 = answer.ToList(); xxx.答案list.Add(new ZdyAnswerAnalysisItem() { 答案 = templist2[0].答案, 答案统计 = templist2.Count, 总人数 = templist.Count }); } analysislist.Add(xxx); } } DataTable dt2 = new DataTable(); dt2.Columns.AddRange(new DataColumn[]{ new DataColumn("类别",typeof(string)), //new DataColumn("学校名称",typeof(string)), new DataColumn("题号",typeof(string)), new DataColumn("题目",typeof(string)), //new DataColumn("A",typeof(string)), //new DataColumn("B",typeof(string)), //new DataColumn("C",typeof(string)), //new DataColumn("D",typeof(string)) }); foreach (var analysis in analysislist) { if (analysis.题号 != 11 && analysis.题号 != 13) { dr = dt2.NewRow(); dr["类别"] = analysis.类别; //dr["学校名称"] = analysis.学校名称; dr["题号"] = analysis.题号; dr["题目"] = analysis.题目; int j = 0; for (int i = 0; i < analysis.答案list.Count; i++) { int index = i + 3 + j; if (dt2.Columns.Count <= index) { dt2.Columns.Add(new DataColumn("答案" + i, typeof(string))); dt2.Columns.Add(new DataColumn("比例" + i, typeof(string))); } string daan = ""; var tm = topList.Find(o => o.ID == analysis.题号); if (tm != null && analysis.答案list[i].答案 == "A") { daan = tm.A; } else if (tm != null && analysis.答案list[i].答案 == "B") { daan = tm.B; } else if (tm != null && analysis.答案list[i].答案 == "C") { daan = tm.C; } else if (tm != null && analysis.答案list[i].答案 == "D") { daan = tm.D; } else { daan = analysis.答案list[i].答案; } dr[index] = daan + "(" + analysis.答案list[i].答案统计 + "/" + analysis.答案list[i].总人数 + ")"; dr[index + 1] = Math.Round(analysis.答案list[i].比例, 2) + "%"; j++; } dt2.Rows.Add(dr); } } Tool.DataTableToExcel(dt2, "总体统计结果" + DateTime.Now + ".xlsx"); } } protected void Button12_Click(object sender, EventArgs e) { List ansers = BLL.UserBll.GetAnswersyc(); var topList = BLL.UserBll.GetTopicsyc(); var schoolMB = BLL.UserBll.getschoolMB(); var userList = BLL.UserBll.GetUsersyc(); var getR = BLL.UserBll.GetUsersycTwo(); if (ansers != null && ansers.Count > 0) { DataTable dt = new DataTable(); dt.Columns.AddRange(new DataColumn[]{ new DataColumn("类别",typeof(string)), new DataColumn("学校区域",typeof(string)), new DataColumn("学校类型",typeof(string)), new DataColumn("学校名称",typeof(string)), new DataColumn("班级名称",typeof(string)), new DataColumn("姓名",typeof(string)), new DataColumn("手机",typeof(string)), new DataColumn("题号",typeof(string)), new DataColumn("题目",typeof(string)), new DataColumn("答案",typeof(string)) }); DataRow dr = null; foreach (var ans in ansers) { var result = Quiz.Utility.XmlSerializer.Deserialize(ans.Keys); if (result != null) { foreach (var reskey in result.KeyList) { dr = dt.NewRow(); dr["类别"] = Enum.GetName(typeof(UserTypeEnum), ans.UserType); if (schoolMB != null && schoolMB.Count > 0) { var get = schoolMB.Find(o => o.SchoolName == ans.SchoolName); if (get != null && !string.IsNullOrEmpty(get.SchoolName)) { dr["学校类型"] = "民办" + ans.schoolType; } else dr["学校类型"] = "公办" + ans.schoolType; } else dr["学校类型"] = "公办" + ans.schoolType; dr["学校区域"] = getR.Find(o => o.SchoolName == ans.SchoolName).region; dr["学校名称"] = ans.SchoolName; dr["班级名称"] = ans.ClassName; dr["姓名"] = "***";//ans.StudentName; dr["手机"] ="***"; //ans.PhoneName if (reskey.TopicId == 10) { string dtate = "2019-11-21 14:20"; if (ans.Intime < DateTime.Parse(dtate) && reskey.Keys == "C") { reskey.Keys = "B"; } } if (reskey.TopicId == 7) { string dtate = "2019-11-21 15:30"; if (ans.Intime < DateTime.Parse(dtate) && reskey.Keys == "C") { reskey.Keys = "B"; } } dr["题号"] = reskey.TopicId; if (reskey.TopicId == 0) reskey.TopicId = 12; dr["题目"] = topList.Find(o => o.ID == reskey.TopicId).Question; dr["答案"] = reskey.Keys; dt.Rows.Add(dr); } } } var list = ModelConstructor.CreateModelList(dt); //var analysislist = new List(); //var groups = list.GroupBy(o => o.学校名称); //foreach (IGrouping g in groups) //{ // var s = g.GroupBy(o => o.题号); // foreach (IGrouping item in s)//每个题目分组 // { // var templist = item.ToList(); // var xxx = new ZdyAnswerAnalysis() // { // 类别 = templist[0].类别, // 学校名称 = templist[0].学校名称, // 题号 = templist[0].题号, // 题目 = templist[0].题目, // 答案list = new List() // }; // var answers = item.GroupBy(o => o.答案); // foreach (var answer in answers) // { // var templist2 = answer.ToList(); // xxx.答案list.Add(new ZdyAnswerAnalysisItem() // { // 答案 = templist2[0].答案, // 答案统计 = templist2.Count, // 总人数 = templist.Count // }); // } // analysislist.Add(xxx); // } //} var analysislist = new List(); var groupsleibie = list.GroupBy(o => o.类别); foreach (IGrouping group in groupsleibie) { var ss = group.ToList(); var groups = ss.GroupBy(o => o.学校名称).ToList(); foreach (IGrouping g in groups) { var analysis2 = g.ToList(); var classN = g.GroupBy(o => o.班级名称); foreach (IGrouping c in classN)//班级 { var schools = new ZdyAnswerAnalysis2 { 类别 = ss[0].类别, 学校区域= analysis2[0].学校区域, 学校名称 = analysis2[0].学校名称, 学校类型 = analysis2[0].学校类型, 班级名称 = analysis2[0].班级名称 }; var analysis3 = c.ToList(); schools.班级名称 = analysis3[0].班级名称; schools.题目list = new List(); var timu = c.GroupBy(o => o.题号); foreach (IGrouping tm in timu) { var tm2 = tm.ToList(); schools.总数 = tm2.Count.ToString(); var tmschool = new ZdyAnswerAnalysisQuestion { 题号 = tm2[0].题号, 题目 = tm2[0].题目 }; schools.题目list.Add(tmschool); tmschool.答案list = new List(); var answers = tm.GroupBy(o => o.答案); foreach (var anser in answers) { var ans = anser.ToList(); tmschool.答案list.Add(new ZdyAnswerAnalysisItem { 答案 = ans[0].答案, 答案统计 = ans.Count, 总人数 = tm2.Count }); } } analysislist.Add(schools); //} }//end 构造的新list } DataTable dt2 = new DataTable(); dt2.Columns.AddRange(new DataColumn[]{ new DataColumn("类别",typeof(string)), new DataColumn("学校区域",typeof(string)), new DataColumn("学校类型",typeof(string)), new DataColumn("学校名称",typeof(string)), new DataColumn("班级名称",typeof(string)), new DataColumn("班级总人数",typeof(int)), new DataColumn("班级回收数",typeof(string)), //new DataColumn("班级回收率",typeof(string)), //new DataColumn("校风校纪(%)",typeof(string)), new DataColumn("校纪校风(满意)",typeof(int)), new DataColumn("校纪校风(较满意)",typeof(int)), new DataColumn("校纪校风(不满意)",typeof(int)), new DataColumn("规范收费(满意)",typeof(int)), new DataColumn("规范收费(较满意)",typeof(int)), new DataColumn("规范收费(不满意)",typeof(int)), new DataColumn("教育质量(满意)",typeof(int)), new DataColumn("教育质量(较满意)",typeof(int)), new DataColumn("教育质量(不满意)",typeof(int)), new DataColumn("师德师风(满意)",typeof(int)), new DataColumn("师德师风(较满意)",typeof(int)), new DataColumn("师德师风(不满意)",typeof(int)), new DataColumn("作业负担(满意)",typeof(int)), new DataColumn("作业负担(较满意)",typeof(int)), new DataColumn("作业负担(不满意)",typeof(int)), new DataColumn("食堂质量(满意)",typeof(int)), new DataColumn("食堂质量(较满意)",typeof(int)), new DataColumn("食堂质量(不满意)",typeof(int)), new DataColumn("廉洁从教(满意)",typeof(int)), new DataColumn("廉洁从教(较满意)",typeof(int)), new DataColumn("廉洁从教(不满意)",typeof(int)), new DataColumn("家访联系(上门)",typeof(int)), new DataColumn("家访联系(电话或其它)",typeof(int)), new DataColumn("家访联系(没有)",typeof(int)), new DataColumn("强制推销学习资料(没有)",typeof(int)), new DataColumn("强制推销学习资料(少量)",typeof(int)), new DataColumn("强制推销学习资料(经常)",typeof(int)), new DataColumn("总体评价(满意)",typeof(int)), new DataColumn("总体评价(较满意)",typeof(int)), new DataColumn("总体评价(不满意)",typeof(int)), }); foreach (var analysis in analysislist) { dr = dt2.NewRow(); dr["类别"] = analysis.类别; dr["学校区域"] = analysis.学校区域; dr["学校类型"] = analysis.学校类型; dr["学校名称"] = analysis.学校名称; dr["班级名称"] = analysis.班级名称; var cont = userList.Count(o => o.SchoolName == analysis.学校名称 && o.UserType == 0 && o.ClassName == analysis.班级名称); dr["班级总人数"] = cont; dr["班级回收数"] = analysis.总数; //dr["班级回收率"] = (float.Parse(analysis.总数)/ cont*100).ToString("#0.00") +"%"; string next = ""; for (int i = 0; i < analysis.题目list.Count; i++) { int ssa1 = 0; var s = ""; string jg = ""; if (analysis.题目list[i].题号 != 11 && analysis.题目list[i].题号 != 13) { for (int j = 0; j < analysis.题目list[i].答案list.Count; j++) { var d = analysis.题目list[i].答案list[j].答案统计; int dn = int.Parse(d.ToString()); //if (string.IsNullOrEmpty(d.ToString())) dn = 0; //if (next != s) ssa1 = 0; switch (analysis.题目list[i].题目 + ":" + analysis.题目list[i].答案list[j].答案) { //case "您对班级教师、阿姨照顾幼儿生活方面的评价:A": // dr["照顾幼儿(仔细)"] = analysis.题目list[i].答案list[j].答案统计; // break; //case "您对班级教师、阿姨照顾幼儿生活方面的评价:B": // dr["照顾幼儿(较仔细)"] = analysis.题目list[i].答案list[j].答案统计; break; //case "您对班级教师、阿姨照顾幼儿生活方面的评价:C": // dr["照顾幼儿(不仔细)"] = analysis.题目list[i].答案list[j].答案统计; break; //case "学校有严格的校纪校风与良好校容校貌。:D": // dr["校纪校风(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; case "校纪校风:A": dr["校纪校风(满意)"] = dn; //s = "校风校纪(%)"; //ssa1+= dn; //jg=((ssa1*0.8/int.Parse(analysis.总数))*100).ToString("#0.00") + "%"; break; case "校纪校风:B": dr["校纪校风(较满意)"] = dn; /*s = "校风校纪(%)" ;ssa1 += dn;*/ //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "校纪校风:C": dr["校纪校风(不满意)"] = dn; /*s = "校风校纪(%)"; */break; //case "严格执行教育收费规定,无乱收费行为。:D": // dr["规范收费(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; case "规范收费:A": dr["规范收费(满意)"] = dn; /*s = "规范收费(%)";*/ //ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "规范收费:B": dr["规范收费(较满意)"] = dn; /*s = "规范收费(%)";*/ //ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "规范收费:C": dr["规范收费(不满意)"] = dn;/* s = "规范收费(%)"; */break; //case "从严规范教育教学工作,教学质量稳步提升。:D": // dr["教育质量(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; case "教育质量:A": dr["教育质量(满意)"] = dn;/* s = "教学质量(%)";*/ //ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "教育质量:B": dr["教育质量(较满意)"] = dn; /*s = "教学质量(%)";*/ //ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "教育质量:C": dr["教育质量(不满意)"] = dn; /*s = "教学质量(%)"; */break; //case "老师注重对学生的思想教育和良好行为习惯的培养,无体罚或变相体罚学生行为。:D": // dr["师德师风(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; case "师德师风:A": dr["师德师风(满意)"] = dn;/* s = "师德师风(%)*/ // ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "师德师风:B": dr["师德师风(较满意)"] = dn; s = "师德师风(%)"; //ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "师德师风:C": dr["师德师风(不满意)"] = dn; break;// s = "师德师风(%)"; //case "中小学校教师能科学布置学生课内外作业,作业量适中,能按时批改;幼儿教师能做到细心周到,轻松教学。:D": // dr["作业负担(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; case "作业负担:A": dr["作业负担(满意)"] = dn; //s = "家访联系(%)"; //ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "作业负担:B": dr["作业负担(较满意)"] = dn; //s = "家访联系(%)"; // ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "作业负担:C": dr["作业负担(不满意)"] = dn; //s = "家访联系(%)"; //case "学校不统一组织或变相要求额外订购书刊及教辅用书,不组织或推荐学生参与有偿补课和其他有偿培训活动。:D": // dr["有偿补课(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; break; case "强制推销学习资料:A": dr["强制推销学习资料(没有)"] = dn; //s = "食堂质量(%)"; // ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; ; break; case "强制推销学习资料:B": dr["强制推销学习资料(少量)"] = dn; //s = "食堂质量(%)"; //ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "强制推销学习资料:C": dr["强制推销学习资料(经常)"] = dn;// s = "食堂质量(%)"; //case "学校食堂收费合理,饭菜卫生量足价廉,按时公布食谱。:D": // dr["食堂质量(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; break; case "食堂质量:A": dr["食堂质量(满意)"] = dn; // = "作业负担(%)"; //ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "食堂质量:B": dr["食堂质量(较满意)"] = dn; //s = "作业负担(%)"; // ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "食堂质量:C": dr["食堂质量(不满意)"] = dn; //s = "作业负担(%)"; //case "教师廉洁从教,不收受家长礼物或接受家长宴请。:D": // dr["廉洁从教(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; break; case "廉洁从教:A": dr["廉洁从教(满意)"] = dn; //s = "教师有偿家教(%)"; // ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "廉洁从教:B": dr["廉洁从教(较满意)"] = dn; //s = "教师有偿家教(%)"; // ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "廉洁从教:C": dr["廉洁从教(不满意)"] = dn; //s = "教师有偿家教(%)"; //case "能定期召开家长会或上门家访,与家长进行多种形式的沟通。:D": // dr["家访联系(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; break; case "家访联系:A": dr["家访联系(上门)"] = dn; // s = "教师收受礼品礼金、接受宴请等(%)"; ///ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "家访联系:B": dr["家访联系(电话或其它)"] = dn; // s = "教师收受礼品礼金、接受宴请等(%)"; // ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "家访联系:C": dr["家访联系(没有)"] = dn; //s = "教师收受礼品礼金、接受宴请等(%)"; break; case "总体评价:A": dr["总体评价(满意)"] = dn; // s = "总体评价(%)"; // ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "总体评价:B": dr["总体评价(较满意)"] = dn; //s = "总体评价(%)"; // ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "总体评价:C": dr["总体评价(不满意)"] = dn; //s = "总体评价(%)"; break; //case "您对学校教育管理总体评价。:D": // dr["总体评价(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; } //if (!string.IsNullOrEmpty(s)) //{ // dr[s] = jg; // next = s; //} } } } dt2.Rows.Add(dr); } //var s = dt2; Tool.DataTableToExcel(dt2, "按学校班级统计结果格式版" + DateTime.Now + ".xlsx"); } } } protected void Button15_Click(object sender, EventArgs e) { List ansers = BLL.UserBll.GetAnswersyc(); var topList = BLL.UserBll.GetTopicsyc(); var userList = BLL.UserBll.GetUsersyc(); var schoolMB = BLL.UserBll.getschoolMB(); var getR = BLL.UserBll.GetUsersycTwo(); if (ansers != null && ansers.Count > 0) { DataTable dt = new DataTable(); dt.Columns.AddRange(new DataColumn[]{ new DataColumn("类别",typeof(string)), new DataColumn("学校区域",typeof(string)), new DataColumn("学校类型",typeof(string)), new DataColumn("学校名称",typeof(string)), new DataColumn("班级名称",typeof(string)), new DataColumn("姓名",typeof(string)), new DataColumn("手机",typeof(string)), new DataColumn("题号",typeof(string)), new DataColumn("题目",typeof(string)), new DataColumn("答案",typeof(string)) }); DataRow dr = null; foreach (var ans in ansers) { var result = Quiz.Utility.XmlSerializer.Deserialize(ans.Keys); if (result != null) { foreach (var reskey in result.KeyList) { dr = dt.NewRow(); dr["类别"] = Enum.GetName(typeof(UserTypeEnum), ans.UserType); if (schoolMB != null && schoolMB.Count > 0) { var get = schoolMB.Find(o => o.SchoolName == ans.SchoolName); if (get != null && !string.IsNullOrEmpty(get.SchoolName)) { dr["学校类型"] = "民办" + ans.schoolType; } else dr["学校类型"] = "公办" + ans.schoolType; } else dr["学校类型"] = "公办" + ans.schoolType; dr["学校区域"] = getR.Find(o => o.SchoolName == ans.SchoolName).region; dr["学校名称"] = ans.SchoolName; dr["班级名称"] = ans.ClassName; dr["姓名"] = "***";//ans.StudentName; dr["手机"] = "***"; //ans.PhoneName if (reskey.TopicId == 10) { string dtate = "2019-11-21 14:20"; if (ans.Intime < DateTime.Parse(dtate) && reskey.Keys == "C") { reskey.Keys = "B"; } } if (reskey.TopicId == 7) { string dtate = "2019-11-21 15:30"; if (ans.Intime < DateTime.Parse(dtate) && reskey.Keys == "C") { reskey.Keys = "B"; } } dr["题号"] = reskey.TopicId; if (reskey.TopicId == 0) reskey.TopicId = 12; dr["题目"] = topList.Find(o => o.ID == reskey.TopicId).Question; dr["答案"] = reskey.Keys; dt.Rows.Add(dr); } } } var list = ModelConstructor.CreateModelList(dt); //var analysislist = new List(); //var groups = list.GroupBy(o => o.学校名称); //foreach (IGrouping g in groups) //{ // var s = g.GroupBy(o => o.题号); // foreach (IGrouping item in s)//每个题目分组 // { // var templist = item.ToList(); // var xxx = new ZdyAnswerAnalysis() // { // 类别 = templist[0].类别, // 学校名称 = templist[0].学校名称, // 题号 = templist[0].题号, // 题目 = templist[0].题目, // 答案list = new List() // }; // var answers = item.GroupBy(o => o.答案); // foreach (var answer in answers) // { // var templist2 = answer.ToList(); // xxx.答案list.Add(new ZdyAnswerAnalysisItem() // { // 答案 = templist2[0].答案, // 答案统计 = templist2.Count, // 总人数 = templist.Count // }); // } // analysislist.Add(xxx); // } //} var analysislist = new List(); var groupsleibie = list.GroupBy(o => o.类别); foreach (IGrouping group in groupsleibie) { var ss = group.ToList(); var groups = ss.GroupBy(o => o.学校名称).ToList(); foreach (IGrouping g in groups) { var analysis2 = g.ToList(); //var classN = g.GroupBy(o => o.班级名称); // foreach (IGrouping c in classN)//班级 //{ var schools = new ZdyAnswerAnalysis2 { 类别 = ss[0].类别, 学校名称 = analysis2[0].学校名称, 学校区域=analysis2[0].学校区域, 学校类型 = analysis2[0].学校类型, 班级名称 = analysis2[0].班级名称 }; var analysis3 = g.ToList(); //schools.班级名称 = analysis3[0].班级名称; schools.题目list = new List(); var timu = g.GroupBy(o => o.题号); foreach (IGrouping tm in timu) { var tm2 = tm.ToList(); schools.总数 = tm2.Count.ToString(); var tmschool = new ZdyAnswerAnalysisQuestion { 题号 = tm2[0].题号, 题目 = tm2[0].题目 }; schools.题目list.Add(tmschool); tmschool.答案list = new List(); var answers = tm.GroupBy(o => o.答案); foreach (var anser in answers) { var ans = anser.ToList(); tmschool.答案list.Add(new ZdyAnswerAnalysisItem { 答案 = ans[0].答案, 答案统计 = ans.Count, 总人数 = tm2.Count }); } // } //} }//end 构造的新list analysislist.Add(schools); } DataTable dt2 = new DataTable(); dt2.Columns.AddRange(new DataColumn[]{ new DataColumn("类别",typeof(string)), new DataColumn("学校区域",typeof(string)), new DataColumn("学校类型",typeof(string)), new DataColumn("学校名称",typeof(string)), // new DataColumn("班级名称",typeof(string)), new DataColumn("学校总人数",typeof(int)), new DataColumn("学校回收数",typeof(string)), // new DataColumn("班级回收率",typeof(string)), //new DataColumn("校风校纪(%)",typeof(string)), new DataColumn("校纪校风(满意)",typeof(int)), new DataColumn("校纪校风(较满意)",typeof(int)), new DataColumn("校纪校风(不满意)",typeof(int)), new DataColumn("规范收费(满意)",typeof(int)), new DataColumn("规范收费(较满意)",typeof(int)), new DataColumn("规范收费(不满意)",typeof(int)), new DataColumn("教育质量(满意)",typeof(int)), new DataColumn("教育质量(较满意)",typeof(int)), new DataColumn("教育质量(不满意)",typeof(int)), new DataColumn("师德师风(满意)",typeof(int)), new DataColumn("师德师风(较满意)",typeof(int)), new DataColumn("师德师风(不满意)",typeof(int)), new DataColumn("作业负担(满意)",typeof(int)), new DataColumn("作业负担(较满意)",typeof(int)), new DataColumn("作业负担(不满意)",typeof(int)), new DataColumn("食堂质量(满意)",typeof(int)), new DataColumn("食堂质量(较满意)",typeof(int)), new DataColumn("食堂质量(不满意)",typeof(int)), new DataColumn("廉洁从教(满意)",typeof(int)), new DataColumn("廉洁从教(较满意)",typeof(int)), new DataColumn("廉洁从教(不满意)",typeof(int)), new DataColumn("家访联系(上门)",typeof(int)), new DataColumn("家访联系(电话或其它)",typeof(int)), new DataColumn("家访联系(没有)",typeof(int)), new DataColumn("强制推销学习资料(没有)",typeof(int)), new DataColumn("强制推销学习资料(少量)",typeof(int)), new DataColumn("强制推销学习资料(经常)",typeof(int)), new DataColumn("总体评价(满意)",typeof(int)), new DataColumn("总体评价(较满意)",typeof(int)), new DataColumn("总体评价(不满意)",typeof(int)), }); foreach (var analysis in analysislist) { dr = dt2.NewRow(); dr["类别"] = analysis.类别; dr["学校区域"] = analysis.学校区域; dr["学校类型"] = analysis.学校类型; dr["学校名称"] = analysis.学校名称; // dr["班级名称"] = analysis.班级名称; var cont = userList.Count(o => o.SchoolName == analysis.学校名称 && o.UserType == 0); dr["学校总人数"] = cont; dr["学校回收数"] = analysis.总数; //dr["班级回收率"] = (float.Parse(analysis.总数)/ cont*100).ToString("#0.00") +"%"; string next = ""; for (int i = 0; i < analysis.题目list.Count; i++) { int ssa1 = 0; var s = ""; string jg = ""; if (analysis.题目list[i].题号 != 11 && analysis.题目list[i].题号 != 13) { for (int j = 0; j < analysis.题目list[i].答案list.Count; j++) { var d = analysis.题目list[i].答案list[j].答案统计; int dn = int.Parse(d.ToString()); //if (string.IsNullOrEmpty(d.ToString())) dn = 0; //if (next != s) ssa1 = 0; switch (analysis.题目list[i].题目 + ":" + analysis.题目list[i].答案list[j].答案) { //case "您对班级教师、阿姨照顾幼儿生活方面的评价:A": // dr["照顾幼儿(仔细)"] = analysis.题目list[i].答案list[j].答案统计; // break; //case "您对班级教师、阿姨照顾幼儿生活方面的评价:B": // dr["照顾幼儿(较仔细)"] = analysis.题目list[i].答案list[j].答案统计; break; //case "您对班级教师、阿姨照顾幼儿生活方面的评价:C": // dr["照顾幼儿(不仔细)"] = analysis.题目list[i].答案list[j].答案统计; break; //case "学校有严格的校纪校风与良好校容校貌。:D": // dr["校纪校风(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; case "校纪校风:A": dr["校纪校风(满意)"] = dn; //s = "校风校纪(%)"; //ssa1+= dn; //jg=((ssa1*0.8/int.Parse(analysis.总数))*100).ToString("#0.00") + "%"; break; case "校纪校风:B": dr["校纪校风(较满意)"] = dn; /*s = "校风校纪(%)" ;ssa1 += dn;*/ //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "校纪校风:C": dr["校纪校风(不满意)"] = dn; /*s = "校风校纪(%)"; */break; //case "严格执行教育收费规定,无乱收费行为。:D": // dr["规范收费(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; case "规范收费:A": dr["规范收费(满意)"] = dn; /*s = "规范收费(%)";*/ //ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "规范收费:B": dr["规范收费(较满意)"] = dn; /*s = "规范收费(%)";*/ //ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "规范收费:C": dr["规范收费(不满意)"] = dn;/* s = "规范收费(%)"; */break; //case "从严规范教育教学工作,教学质量稳步提升。:D": // dr["教育质量(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; case "教育质量:A": dr["教育质量(满意)"] = dn;/* s = "教学质量(%)";*/ //ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "教育质量:B": dr["教育质量(较满意)"] = dn; /*s = "教学质量(%)";*/ //ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "教育质量:C": dr["教育质量(不满意)"] = dn; /*s = "教学质量(%)"; */break; //case "老师注重对学生的思想教育和良好行为习惯的培养,无体罚或变相体罚学生行为。:D": // dr["师德师风(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; case "师德师风:A": dr["师德师风(满意)"] = dn;/* s = "师德师风(%)*/ // ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "师德师风:B": dr["师德师风(较满意)"] = dn; s = "师德师风(%)"; //ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "师德师风:C": dr["师德师风(不满意)"] = dn; break;// s = "师德师风(%)"; //case "中小学校教师能科学布置学生课内外作业,作业量适中,能按时批改;幼儿教师能做到细心周到,轻松教学。:D": // dr["作业负担(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; case "作业负担:A": dr["作业负担(满意)"] = dn; //s = "家访联系(%)"; //ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "作业负担:B": dr["作业负担(较满意)"] = dn; //s = "家访联系(%)"; // ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "作业负担:C": dr["作业负担(不满意)"] = dn; //s = "家访联系(%)"; //case "学校不统一组织或变相要求额外订购书刊及教辅用书,不组织或推荐学生参与有偿补课和其他有偿培训活动。:D": // dr["有偿补课(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; break; case "强制推销学习资料:A": dr["强制推销学习资料(没有)"] = dn; //s = "食堂质量(%)"; // ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; ; break; case "强制推销学习资料:B": dr["强制推销学习资料(少量)"] = dn; //s = "食堂质量(%)"; //ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "强制推销学习资料:C": dr["强制推销学习资料(经常)"] = dn;// s = "食堂质量(%)"; //case "学校食堂收费合理,饭菜卫生量足价廉,按时公布食谱。:D": // dr["食堂质量(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; break; case "食堂质量:A": dr["食堂质量(满意)"] = dn; // = "作业负担(%)"; //ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "食堂质量:B": dr["食堂质量(较满意)"] = dn; //s = "作业负担(%)"; // ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "食堂质量:C": dr["食堂质量(不满意)"] = dn; //s = "作业负担(%)"; //case "教师廉洁从教,不收受家长礼物或接受家长宴请。:D": // dr["廉洁从教(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; break; case "廉洁从教:A": dr["廉洁从教(满意)"] = dn; //s = "教师有偿家教(%)"; // ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "廉洁从教:B": dr["廉洁从教(较满意)"] = dn; //s = "教师有偿家教(%)"; // ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "廉洁从教:C": dr["廉洁从教(不满意)"] = dn; //s = "教师有偿家教(%)"; //case "能定期召开家长会或上门家访,与家长进行多种形式的沟通。:D": // dr["家访联系(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; break; case "家访联系:A": dr["家访联系(上门)"] = dn; // s = "教师收受礼品礼金、接受宴请等(%)"; ///ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "家访联系:B": dr["家访联系(电话或其它)"] = dn; // s = "教师收受礼品礼金、接受宴请等(%)"; // ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "家访联系:C": dr["家访联系(没有)"] = dn; //s = "教师收受礼品礼金、接受宴请等(%)"; break; case "总体评价:A": dr["总体评价(满意)"] = dn; // s = "总体评价(%)"; // ssa1 += dn; // jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "总体评价:B": dr["总体评价(较满意)"] = dn; //s = "总体评价(%)"; // ssa1 += dn; //jg = ((ssa1 * 0.8 / int.Parse(analysis.总数)) * 100).ToString("#0.00") + "%"; break; case "总体评价:C": dr["总体评价(不满意)"] = dn; //s = "总体评价(%)"; break; //case "您对学校教育管理总体评价。:D": // dr["总体评价(不了解)"] = analysis.题目list[i].答案list[j].答案统计; break; } //if (!string.IsNullOrEmpty(s)) //{ // dr[s] = jg; // next = s; //} } } } dt2.Rows.Add(dr); } //var s = dt2; Tool.DataTableToExcel(dt2, "按学校统计结果格式版" + DateTime.Now + ".xlsx"); } } } #endregion } }