/// <summary>
        /// 考试报表
        /// </summary>
        /// <returns></returns>
        public ActionResult ExamReport(ExamReportModels examReportModels, ExamReportOptions examReportOptions)
        {
            /* 操作类型 */
            string 操作类型 = LKExamURLQueryKey.GetString("HandleType");

            bool iSWord版 = 操作类型 == "2";

            #region 考试报表属性
            /* 考试设置ID */
            Guid g考试设置ID = examReportModels.TestID;

            /* 部门ID */
            Guid g部门ID = examReportModels.DepartmentID;

            /* 考试报表选项初始化值 */
            examReportOptions = new ExamReportOptions(examReportOptions);

            /* 考试报表选项 */
            examReportModels.ExamReportOptions = examReportOptions;

            /* 是否导出Word */
            examReportModels.ISWord版 = iSWord版;

            /* 分数段 */
            int i分数段 = examReportOptions.ScoreSection;
            #endregion

            #region 考试分析数据
            考试设置 c考试设置 = null;
            List<考试分析> list考试分析 = 考试分析.得到某场考试分析数据(g考试设置ID, i分数段, g部门ID, out c考试设置);
            examReportModels.考试分析 = list考试分析;
            examReportModels.考试设置 = c考试设置;
            examReportModels.DataTable = 导出考试分析.得到考试分析信息(g考试设置ID, g部门ID);
            #endregion

            /*
              *操作类型
              *  (1)1表示查询
              *  (2)2表示导出Word
              */
            if (iSWord版)
            {
                string s部门名称 = "部门";
                string sFileName = c考试设置.试卷内容.名称 + (string.IsNullOrEmpty(s部门名称) ? "" : "(" + s部门名称 + ")");
                new LKExamOffice().导出考试报表到Word(examReportModels, sFileName);
            }
            else
            {
                #region 考试报表Models
                if (list考试分析 != null && list考试分析.Count != 0)
                {
                    /* 将考试报表Models存放在Session中 */
                    Session["考试报表Models"] = examReportModels;
                    Session.Timeout = 1;
                }
                #endregion
            }

            return View("~/Views/Examiner/Analysis/ExamReport.aspx", examReportModels);
        }
        /// <summary>
        /// ExamReport图形
        /// </summary>
        /// <param name="examReportModels">考试报表Models</param>
        /// <returns></returns>
        public static string ExamReport图形(ExamReportModels examReportModels)
        {
            string sContent = LKPageHtml.MvcTextTag(TagName.H3, LKExamEnvironment.考生名称 + "考试分析图表:");

            List<考试分析> list考试分析 = examReportModels.考试分析;
            if (list考试分析 != null && list考试分析.Count != 0)
            {
                /* 图表标题 */
                string sTitle = examReportModels.考试设置.试卷内容.名称;
                if (examReportModels.DepartmentID != Guid.Empty)
                {
                    sTitle += "(" + list考试分析[0].部门名 + ")";
                }

                Guid g考试设置ID = examReportModels.考试设置.ID;
                HttpRequest httpRequest = HttpContext.Current.Request;
                string sSrc = httpRequest.Url.Scheme + "://" + httpRequest.Url.Authority + ExamReport图形文件虚拟路径(examReportModels.ISWord版, g考试设置ID);

                /* 考试图表 */
                sContent += LKPageHtml.MvcTextTag(TagName.IMG, null, new { src = sSrc, alt = sTitle, title = sTitle });
            }
            else
            {
                /* 暂无考试分析 */
                sContent += LKPageHtml.MvcTextTag_Div("暂无分析图表", new { @class = "nodata" });
            }
            return LKPageHtml.MvcTextTag_Div(sContent);
        }
Пример #3
0
        /// <summary>
        /// 返回考试分析Chart
        /// </summary>
        /// <param name="examReportModels">考试报表Models</param>
        /// <returns></returns>
        public Chart Get考试分析Chart(ExamReportModels examReportModels)
        {
            /* 考试报表选项 */
            ExamReportOptions examReportOptions = examReportModels.ExamReportOptions;

            /* 考试设置 */
            考试设置 c考试设置 = examReportModels.考试设置;

            /* list考试分析  */
            List<考试分析> list考试分析 = examReportModels.考试分析;

            /* 标题 */
            string sTitle = c考试设置.试卷内容.名称;
            if (examReportModels.DepartmentID != Guid.Empty)
            {
                sTitle += "(" + list考试分析[0].部门名 + ")";
            }

            /* 考试分析图表 */
            Chart chart = new System.Web.UI.DataVisualization.Charting.Chart();

            Title title = new Title();
            title.Text = sTitle;
            title.ToolTip = sTitle;
            title.Font = new Font("Trebuchet MS", 15, FontStyle.Bold);
            title.ShadowColor = Color.FromArgb(32, 0, 0, 0);
            title.ShadowOffset = 3;
            title.ForeColor = Color.FromArgb(26, 59, 105);
            chart.Titles.Add(title);

            chart.Width = examReportModels.ISWord版 ? examReportOptions.WidthWord版 : examReportOptions.Width;
            chart.Height = examReportOptions.Height;
            chart.ImageType = ChartImageType.Png;
            chart.RenderType = RenderType.ImageTag;
            chart.Palette = ChartColorPalette.BrightPastel;
            chart.BackColor = Color.FromArgb(211, 223, 240);
            chart.BackSecondaryColor = Color.White;
            chart.BackGradientStyle = GradientStyle.TopBottom;
            chart.BorderlineDashStyle = ChartDashStyle.Solid;
            chart.BorderWidth = 2;
            chart.BorderColor = Color.FromArgb(26, 59, 105);
            chart.BorderSkin.SkinStyle = BorderSkinStyle.Emboss;
            return chart;
        }
Пример #4
0
        /// <summary>
        /// 保存考试分析Chart
        /// </summary>
        /// <param name="chart"></param>
        public void Save考试分析Chart(ExamReportModels examReportModels)
        {
            Guid g考试设置ID = examReportModels.考试设置.ID;
            Chart chart = Get考试分析图形(examReportModels);

            #region Directory
            //web请求
            HttpServerUtility httpServerUtility = System.Web.HttpContext.Current.Server;

            string directory = "/Content/File/ExamChart/";

            //新图片路径对应的目录不存在
            if (!Directory.Exists(httpServerUtility.MapPath(directory)))
            {
                //按虚拟路径创建所有目录和子目录
                Directory.CreateDirectory(@httpServerUtility.MapPath(directory));
            }
            #endregion

            string filePath = AnalysisExtensions.ExamReport图形文件虚拟路径(true, g考试设置ID);
            chart.SaveImage(@httpServerUtility.MapPath(filePath), ChartImageFormat.Png);
            chart.Dispose();
            chart = null;
        }
Пример #5
0
 /// <summary>
 /// 返回考试分析饼状图形
 /// </summary>
 /// <param name="examReportModels">考试报表Models</param>
 /// <returns></returns>
 public Chart Get考试分析饼状图形(ExamReportModels examReportModels)
 {
     return Get考试分析特殊图形(examReportModels, SeriesChartType.Pie);
 }
Пример #6
0
        /// <summary>
        /// 返回考试分析特殊图形
        /// </summary>
        /// <param name="examReportModels">考试报表Models</param>
        /// <param name="seriesChartType">图形类型</param>
        /// <returns></returns>
        public Chart Get考试分析特殊图形(ExamReportModels examReportModels, SeriesChartType seriesChartType)
        {
            /* 考试分析Chart */
            Chart chart = Get考试分析Chart(examReportModels);

            /* list考试分析 */
            List<考试分析> list考试分析 = examReportModels.考试分析;
            List<string> listX = list考试分析[0].间隔值列表;

            for (int i = 0; i < list考试分析.Count; i++)
            {
                ChartArea chartArea = Get考试分析ChartArea();
                List<int> listY = list考试分析[i].人数列表;
                //chartArea.Area3DStyle.Enable3D = true;
                chart.ChartAreas.Add(chartArea);

                Legend legend = new Legend();
                legend.Title = "分数段";
                legend.BackColor = Color.Transparent;
                legend.Font = new Font("Trebuchet MS", 8, FontStyle.Bold);
                legend.DockedToChartArea = chartArea.Name;
                legend.Enabled = true;
                legend.ShadowOffset = 3;
                chart.Legends.Add(legend);

                Series series = new Series();
                series.BorderWidth = 3;
                series.ShadowOffset = 2;
                series.Legend = legend.Name;
                series.Label = "#PERCENT{P1}";
                series.ChartType = seriesChartType;

                series["PieDrawingStyle"] = "SoftEdge";
                series.ChartArea = chartArea.Name;
                for (int k = 0; k < listX.Count; k++)
                {
                    DataPoint point = new DataPoint();
                    point.LegendText = listX[k];
                    point.YValues[0] = listY[k];
                    series.Points.Add(point);
                }
                chart.Series.Add(series);
            }

            return chart;
        }
Пример #7
0
 /// <summary>
 /// 返回考试分析样条线图形
 /// </summary>
 /// <param name="examReportModels">考试报表Models</param>
 /// <returns></returns>
 public Chart Get考试分析样条线图形(ExamReportModels examReportModels)
 {
     return Get考试分析常用图形(examReportModels, SeriesChartType.Spline);
 }
Пример #8
0
 /// <summary>
 /// 返回考试分析柱形图
 /// </summary>
 /// <param name="examReportModels">考试报表Model</param>
 /// <returns></returns>
 public Chart Get考试分析柱形图形(ExamReportModels examReportModels)
 {
     return Get考试分析常用图形(examReportModels, SeriesChartType.Column);
 }
Пример #9
0
        /// <summary>
        /// 返回考试分析常用图形
        /// </summary>
        /// <param name="examReportModels">考试报表Models</param>
        /// <param name="seriesChartType">图形类型</param>
        /// <returns></returns>
        public Chart Get考试分析常用图形(ExamReportModels examReportModels, SeriesChartType seriesChartType)
        {
            /* 考试分析Chart */
            Chart chart = Get考试分析Chart(examReportModels);

            /* list考试分析 */
            List<考试分析> list考试分析 = examReportModels.考试分析;
            List<string> listX = list考试分析[0].间隔值列表;

            ChartArea chartArea = Get考试分析ChartArea();

            chartArea.AxisY.Title = "人数";
            chartArea.AxisY.TextOrientation = TextOrientation.Stacked;
            chartArea.AxisY.LineColor = Color.FromArgb(64, 64, 64, 64);
            chartArea.AxisY.LabelStyle.Font = new Font("Trebuchet MS", 8, FontStyle.Bold);
            chartArea.AxisY.MajorGrid.LineColor = Color.FromArgb(64, 64, 64, 64);

            chartArea.AxisX.Title = "分数段";
            chartArea.AxisX.LineColor = Color.FromArgb(64, 64, 64, 64);
            chartArea.AxisX.LabelStyle.Font = new Font("Trebuchet MS", 8, FontStyle.Bold);
            chartArea.AxisX.MajorGrid.LineColor = Color.FromArgb(64, 64, 64, 64);

            chart.ChartAreas.Add(chartArea);

            //加旁边显示
            Legend legend = new Legend();
            legend.ShadowOffset = 3;
            legend.BackColor = Color.Transparent;
            legend.Font = new Font("Trebuchet MS", 8, FontStyle.Bold);
            chart.Legends.Add(legend);

            for (int i = 0; i < list考试分析.Count; i++)
            {
                Series series = new Series();
                series["PointWidth"] = "0.6";
                series["BarLabelStyle"] = "Center";
                series["DrawingStyle"] = "Cylinder";
                series.BorderWidth = 3;
                series.ShadowOffset = 2;
                series.Name = list考试分析[i].部门名;
                series.ChartType = seriesChartType;
                series.IsValueShownAsLabel = true;
                series.Points.DataBindXY(listX, list考试分析[i].人数列表);
                chart.Series.Add(series);
            }

            return chart;
        }
Пример #10
0
 /// <summary>
 /// 返回考试分析圆环图形
 /// </summary>
 /// <param name="examReportModels">考试报表Models</param>
 /// <returns></returns>
 public Chart Get考试分析圆环图形(ExamReportModels examReportModels)
 {
     return Get考试分析特殊图形(examReportModels, SeriesChartType.Doughnut);
 }
Пример #11
0
        /// <summary>
        /// 返回考试分析图形
        /// </summary>
        /// <returns></returns>
        public Chart Get考试分析图形(ExamReportModels examReportModels)
        {
            /* 考试报表选项 */
            ExamReportOptions examReportOptions = examReportModels.ExamReportOptions;

            /* 图形类型 */
            int chartType = examReportOptions.ChartType;

            /* list考试分析 */
            List<考试分析> list考试分析 = examReportModels.考试分析;

            Chart chart = null;

            #region 图形类型
            switch (chartType)
            {
                /* 样条线图形 */
                case 1:
                    chart = Get考试分析样条线图形(examReportModels);
                    break;

                /* 折线图形 */
                case 2:
                    chart = Get考试分析折线图形(examReportModels);
                    break;

                /* 圆环图形 */
                case 3:
                    chart = Get考试分析圆环图形(examReportModels);
                    break;

                /* 饼状图形 */
                case 4:
                    chart = Get考试分析饼状图形(examReportModels);
                    break;

                /* 默认图形-柱形图形 */
                default:
                    chart = Get考试分析柱形图形(examReportModels);
                    break;
            }
            #endregion

            return chart;
        }
 /// <summary>
 /// ExamReport图形WORD版
 /// </summary>
 /// <param name="examReportModels">考试报表Models</param>
 /// <returns></returns>
 public static string ExamReport图形WORD版(ExamReportModels examReportModels)
 {
     examReportModels.ISWord版 = true;
     return ExamReport图形(examReportModels);
 }
 /// <summary>
 /// ExamReport图形HTML版
 /// </summary>
 /// <param name="htmlHelper">HtmlHelper</param>
 /// <param name="examReportModels">考试报表Models</param>
 /// <returns></returns>
 public static MvcHtmlString ExamReport图形HTML版(this HtmlHelper htmlHelper, ExamReportModels examReportModels)
 {
     string sContent = ExamReport图形HTML版(examReportModels);
     return MvcHtmlString.Create(sContent);
 }
 /// <summary>
 /// ExamReport图形HTML版
 /// </summary>
 /// <param name="examReportModels">考试报表Models</param>
 /// <returns></returns>
 public static string ExamReport图形HTML版(ExamReportModels examReportModels)
 {
     examReportModels.ISWord版 = false;
     return ExamReport图形(examReportModels);
 }
Пример #15
0
        /// <summary>
        /// 导出考试报表到Word,将ExamReportModels的考试报表导出到Word文件
        /// </summary>
        /// <param name="examReportModels">考试报表Models</param>
        /// <param name="sFileName">文件名称,考试名称</param>
        public void 导出考试报表到Word(ExamReportModels examReportModels, string sFileName)
        {
            LKExamChart lKChart = new LKExamChart();
            lKChart.Save考试分析Chart(examReportModels);

            HttpRequest httpRequest = HttpContext.Current.Request;
            string s内容 = "";
            s内容 += "<link href=\"" + httpRequest.Url.Scheme + "://" + httpRequest.Url.Authority + "/Content/StyleSheet/Global.css\" rel=\"stylesheet\" type=\"text/css\" />";
            s内容 += @"<style>
                        table{width:600px;}
                        tr{height:25px;}
                        td{text-align: center;border: #abc0db 1px solid;}
                        h1{font-size:20px;}
                        h3{font-size:14px;}
                        h1,div.detailsInfo{text-align: center;}
                        div.manage{margin-top:30px;}
                    </style>";
            s内容 += AnalysisExtensions.ExamReport标题(examReportModels.考试设置);
            s内容 += AnalysisExtensions.ExamReport图形WORD版(examReportModels);
            s内容 += AnalysisExtensions.ExamReport表格(examReportModels.考试分析);
            s内容 += AnalysisExtensions.ExamReport情况(examReportModels.DataTable);
            s内容 += AnalysisExtensions.ExamReport管理(examReportModels.考试分析);

            //导出Word
            导出BODY到WORD(s内容, sFileName);
        }