예제 #1
0
        private void BindChartToBindingList()
        {
            //Datasource implements IBindingList interface.
            bindList = new BindingList <PopulationData>();
            bindList.Add(new PopulationData("Indonesia", 341));
            bindList.Add(new PopulationData("India", 660));
            bindList.Add(new PopulationData("USA", 595));
            bindList.Add(new PopulationData("Nigeria", 248));
            bindList.Add(new PopulationData("China", 806));
            bindList.Add(new PopulationData("Bangladesh", 544));

            ChartSeries series = new ChartSeries("Populations");

            //Bind the above list to the chart control.
            ChartDataBindModel dataSeriesModel = new ChartDataBindModel(bindList);

            // If ChartDataBindModel.XName is empty or null, X value is index of point.
            dataSeriesModel.YNames = new string[] { "Population" };
            series.SeriesModel     = dataSeriesModel;

            UpdateChartLabels();

            chartControl2.Series.Add(series);
            chartControl2.PrimaryXAxis.TickLabelsDrawingMode = ChartAxisTickLabelDrawingMode.UserMode;
            chartControl2.PrimaryXAxis.LabelIntersectAction  = ChartLabelIntersectAction.MultipleRows;
            this.chartControl2.PrimaryYAxis.Range            = new MinMaxInfo(120, 820, 200);
        }
예제 #2
0
        /// <summary>
        /// Initializes chart data from XML.
        /// </summary>
        protected void InitializeXMLData()
        {
            //Initializes a new DataSet.
            DataSet xmlDataSet = new DataSet();

            //Loads the dataset with xml data.
            xmlDataSet.ReadXmlSchema(WinFormsUtils.FindFile(@"..\..\..\..\..\..\Common\Data\Chart", "dataschema.xslt"));
            xmlDataSet.ReadXml(WinFormsUtils.FindFile(@"..\..\..\..\..\..\Common\Data\Chart", "data.xml"));

            //Initializes new chart series.
            ChartSeries series = new ChartSeries();

            series.Name = tableName;

            model        = new ChartDataBindModel(xmlDataSet, "Products");
            model.XName  = "ExpiresDate";
            model.YNames = new string[] { "Quantity" };

            series.SeriesModel = model;

            //Adds the series to the ChartSeriesCollection.
            this.chartControl1.Series.Add(series);

            //Specifies the value type of the Chart Axis.
            this.chartControl1.PrimaryXAxis.ValueType = ChartValueType.DateTime;

            //Specifies the format in which the Date-Time values display.
            this.chartControl1.PrimaryXAxis.DateTimeFormat = "MM/dd/yy";

            //Specifies the mode of displaying the label of the x-axis on intersection.
            this.chartControl1.PrimaryXAxis.LabelIntersectAction = ChartLabelIntersectAction.MultipleRows;

            //Specifies the column width mode for the Column Type chart.
            this.chartControl1.ColumnWidthMode = ChartColumnWidthMode.FixedWidthMode;
        }
예제 #3
0
        private void BindChartToArrayList()
        {
            // Data source implements IList or IListSource interface.
            //Create an array of PopulationData objects.
            ArrayList populations = new ArrayList();

            populations.Add(new PopulationData("New York", 13));
            populations.Add(new PopulationData("Houston", 11));
            populations.Add(new PopulationData("Tokyo", 17));
            populations.Add(new PopulationData("London", 12));
            populations.Add(new PopulationData("Chicago", 10));
            populations.Add(new PopulationData("Phoneix", 14));

            ChartSeries series = new ChartSeries("Populations");

            //Bind the above array to the chart control.
            ChartDataBindModel dataSeriesModel = new ChartDataBindModel(populations);

            // If ChartDataBindModel.XName is empty or null, X value is index of point.
            dataSeriesModel.YNames = new string[] { "Population" };
            series.SeriesModel     = dataSeriesModel;

            //Setup a datasource for chart axis and populate axis labels.
            ChartDataBindAxisLabelModel dataLabelsModel = new ChartDataBindAxisLabelModel(populations);

            dataLabelsModel.LabelName = "Name";

            chartControl1.Series.Add(series);
            chartControl1.PrimaryXAxis.LabelsImpl = dataLabelsModel;
        }
예제 #4
0
        void bindData()
        {
            ChartSeries        line  = new ChartSeries("test", ChartSeriesType.Line);
            ChartDataBindModel model = new ChartDataBindModel(chartSource, "Argument");

            model.XName  = "ID";
            model.YNames = new string[] { "Value" };

            line.SeriesModel = model;
            Chart.Series.Add(line);

            ChartDataBindAxisLabelModel dataLabelsModel = new ChartDataBindAxisLabelModel(chartSource);

            dataLabelsModel.LabelName = "Argument";
        }
예제 #5
0
        //This method binds the chart to a given datasource.
        private void BindChart(object populations)
        {
            this.chartControl1.Series.Clear();
            ChartSeries        series          = new ChartSeries("Populations");
            ChartDataBindModel dataSeriesModel = new ChartDataBindModel(populations);

            // If ChartDataBindModel.XName is empty or null, X value is index of point.
            dataSeriesModel.YNames    = new string[] { "Population" };
            series.SeriesModel        = dataSeriesModel;
            series.Style.Border.Color = Color.Transparent;
            ChartDataBindAxisLabelModel dataLabelsModel = new ChartDataBindAxisLabelModel(populations);

            dataLabelsModel.LabelName = "City";
            chartControl1.Series.Add(series);
            chartControl1.PrimaryXAxis.LabelsImpl = dataLabelsModel;
        }
예제 #6
0
        /// <summary>
        /// Initializes chart data from Excel Sheet.
        /// </summary>
        protected void InitializeChartExcelData()
        {
            string fileName = WinFormsUtils.FindFile(@"..\..\..\..\..\..\Common\Data\Chart", "ChartData.xls");

            //The Oledbconnection.
            OleDbConnection excelConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Extended Properties=\"Excel 8.0;HDR=Yes;\"");

            excelConn.Open();

            //Query for retriving the data from the excel sheet.
            string query = "Select * From [Sheet1$A1:B11]";

            OleDbCommand excelCommand = new OleDbCommand(query, excelConn);

            OleDbDataReader excelReader = excelCommand.ExecuteReader(CommandBehavior.CloseConnection);

            //Load the contents to a dataset.
            DataSet excelDataSet = ConvertToDataSet(excelReader, "ExcelTable");



            this.chartControl1.Indexed = true;

            //Initializes new chart series.
            ChartSeries series = new ChartSeries();

            series.Name  = tableName;
            series.Type  = ChartSeriesType.Column;
            model        = new ChartDataBindModel(excelDataSet, "ExcelTable");
            model.XName  = "X Value";
            model.YNames = new string[] { "Y Value" };

            series.SeriesModel = model;

            //Specifies the column width mode for the Column Type chart.
            this.chartControl1.ColumnWidthMode = ChartColumnWidthMode.FixedWidthMode;

            //Adds the series to the ChartSeriesCollection.
            this.chartControl1.Series.Add(series);

            //Close the connection.
            excelReader.Close();
            excelConn.Close();
            this.chartControl1.Text = "Chart Data From Excel";
        }
예제 #7
0
        /// <summary>
        /// Imports chart data from a CSV file.
        /// </summary>
        protected void InitializeChartFromCSV()
        {
            string fileName = WinFormsUtils.FindFile(@"..\..\..\..\..\..\Common\Data\Chart\", "ChartData.csv");

            OleDbConnection csvConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + ";Extended Properties=\"Text;HDR=Yes;FMT=Delimited\"");

            csvConn.Open();

            //Query for retriving the data from the csv file.
            string query = "Select * From " + fileName;

            OleDbCommand csvCommand = new OleDbCommand(query, csvConn);

            OleDbDataReader csvReader = csvCommand.ExecuteReader(CommandBehavior.CloseConnection);

            //Load the contents to a dataset.
            DataSet csvDataSet = ConvertToDataSet(csvReader, "CSVTable");



            this.chartControl1.Indexed = true;

            //Initializes new chart series.
            ChartSeries series = new ChartSeries();

            series.Style.DisplayText     = true;
            series.Style.TextOrientation = ChartTextOrientation.Up;
            series.Name = tableName;

            model        = new ChartDataBindModel(csvDataSet, "CSVTable");
            model.XName  = "X Value";
            model.YNames = new string[] { "Y Value" };

            series.SeriesModel = model;

            //Adds the series to the ChartSeriesCollection.
            this.chartControl1.Series.Add(series);

            ////Specifies the column width mode for the Column Type chart.
            this.chartControl1.ColumnWidthMode = ChartColumnWidthMode.FixedWidthMode;

            //Close the connection.
            csvReader.Close();
            csvConn.Close();
        }
예제 #8
0
        private void InitializeChart()
        {
            string[]      labels = { "Laptop", "Desktop", "Tablet", "Smartphone" };
            Color[]       colors = new Color[] { Color.FromArgb(252, 68, 15), Color.FromArgb(84, 199, 128), Color.FromArgb(6, 186, 248), Color.FromArgb(6, 112, 248) };
            List <Points> data   = new List <Points>();
            Random        r      = new Random();

            for (int i = 0; i < labels.Length; i++)
            {
                data.Add(new Points(labels[i], r.Next(1000, 10000)));
            }


            this.chartControl1.Series.Clear();
            ChartSeries series = new ChartSeries("Series", ChartSeriesType.Column);

            ChartDataBindModel model = new ChartDataBindModel(data);

            model.YNames       = new string[] { "Quantity" };
            series.SeriesModel = model;
            this.chartControl1.Series.Add(series);

            for (int i = 0; i < colors.Length; i++)
            {
                series.Styles[i].Interior = new BrushInfo(colors[i]);
            }
            this.chartControl1.BackColor = Color.White;
            this.chartControl1.PrimaryXAxis.ForeColor             = Color.Black;
            this.chartControl1.PrimaryYAxis.ForeColor             = Color.Black;
            this.chartControl1.PrimaryXAxis.TickLabelsDrawingMode = ChartAxisTickLabelDrawingMode.UserMode;
            ChartDataBindAxisLabelModel labelModel = new ChartDataBindAxisLabelModel(data);

            labelModel.LabelName = "Product";
            this.chartControl1.PrimaryXAxis.LabelsImpl = labelModel;
            series.PointsToolTipFormat    = "Quantity:{4}";
            series.FancyToolTip.Visible   = false;
            series.FancyToolTip.BackColor = System.Drawing.Color.DeepSkyBlue;
            this.chartControl1.PrimaryXAxis.LabelRotate      = false;
            this.chartControl1.PrimaryXAxis.LabelRotateAngle = 45;
            this.chartControl1.ChartInterior = new BrushInfo(Color.White);
            this.chartControl1.ShowLegend    = false;
            this.chartControl1.TextAlignment = StringAlignment.Near;
            this.chartControl1.ForeColor     = Color.Black;
            this.chartControl1.ChartToolTip  = "Quantity";
        }
예제 #9
0
        protected void InitializeChart()
        {
            ChartSeries series = new ChartSeries();

            series.Name = "Products";
            series.Text = series.Name;
            ChartDataBindModel model = new ChartDataBindModel(this.prodDs1, "Products");

            model.XName                = "ExpiresDate";
            model.YNames               = new string[] { "Quantity" };
            series.SeriesModel         = model;
            series.Type                = ChartSeriesType.Column;
            series.Style.Border.Color  = Color.FromArgb(124, 83, 153);
            series.Style.DisplayShadow = false;
            this.chartControl1.Series.Add(series);
            DateTime start = DateTime.Now;
            DateTime end   = start.AddMonths(3);

            this.chartControl1.PrimaryXAxis.DateTimeRange = new ChartDateTimeRange(start, end, 1, ChartDateTimeIntervalType.Months);
        }
예제 #10
0
        protected void InitializeChartData()
        {
            this.chartControl1.Indexed = false;
            ChartSeries series = new ChartSeries();

            series.Name                = "Products";
            series.Text                = series.Name;
            model                      = new ChartDataBindModel(this.prodDs1, "Products");
            model.XName                = "Date";
            model.YNames               = new String[] { "Load" };
            series.SeriesModel         = model;
            series.Type                = ChartSeriesType.Spline;
            series.Style.DisplayShadow = false;
            this.chartControl1.Series.Add(series);
            this.chartControl1.PrimaryXAxis.ValueType      = ChartValueType.DateTime;
            this.chartControl1.PrimaryXAxis.DateTimeFormat = "dd-hh:mm tt";
            this.chartControl1.PrimaryXAxis.RoundingPlaces = 12;
            this.chartControl1.PrimaryXAxis.RangeType      = ChartAxisRangeType.Set;
            this.chartControl1.PrimaryXAxis.DateTimeRange  = new ChartDateTimeRange(lastTime, lastTime.AddDays(1), 4, ChartDateTimeIntervalType.Hours);
        }
예제 #11
0
        /// <summary>
        /// The GetDataBindingSource
        /// </summary>
        /// <param name="data">The data<see cref="Dictionary{string, double}"/></param>
        /// <param name="filter">The filter<see cref="Field"/></param>
        /// <returns>The <see cref="ChartDataBindModel"/></returns>
        internal ChartDataBindModel GetDataBindingSource(Dictionary <string, double> data, Field filter)
        {
            try
            {
                SortedList <string, double> chartdata = new SortedList <string, double>();
                foreach (KeyValuePair <string, double> kvp in data)
                {
                    chartdata.Add(kvp.Key, kvp.Value);
                }

                ChartDataBindModel model = new ChartDataBindModel(chartdata);
                model.YNames = new[] { filter.ToString() };
                return(model);
            }
            catch (Exception ex)
            {
                new Error(ex).ShowDialog();
                return(null);
            }
        }
예제 #12
0
        /// <summary>
        /// Initializes chart data from access database.
        /// </summary>
        protected void InitializeChartData()
        {
            // The Access database
            string fileName           = WinFormsUtils.FindFile(@"..\..\..\..\..\..\Common\Data\Chart", "ChartData.mdb");
            string myConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName;

            // Define the database query
            string mySelectQuery = "SELECT City, ID, Population FROM Demographics";

            // Create a database connection object using the connection string
            OleDbConnection myConnection = new OleDbConnection(myConnectionString);

            // Create a database command on the connection using query
            OleDbCommand myCommand = new OleDbCommand(mySelectQuery, myConnection);

            myCommand.Connection.Open();

            // Create a database reader
            OleDbDataReader myReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection);

            //Load the contents into a dataset.
            DataSet dataSet = ConvertToDataSet(myReader, "Demographics");



            //Initializes new chart series.
            ChartSeries series = new ChartSeries();

            series.Style.DisplayText     = true;
            series.Style.TextOrientation = ChartTextOrientation.Up;
            series.Name = "Products";

            ChartDataBindModel model = new ChartDataBindModel(dataSet, "Demographics");

            model.XName  = "ID";
            model.YNames = new string[] { "Population" };

            series.SeriesModel = model;

            this.xAxisLabelModel           = new ChartDataBindAxisLabelModel(dataSet, "Demographics");
            this.xAxisLabelModel.LabelName = "City";


            //Adds the series to the ChartSeriesCollection.
            this.chartControl1.Series.Add(series);

            this.xAxisLabelModel.PositionIndex = 1;
            this.chartControl1.PrimaryXAxis.TickLabelsDrawingMode = ChartAxisTickLabelDrawingMode.UserMode;

            //this.chartControl1.PrimaryXAxis.AutoValueType = false;
            this.chartControl1.PrimaryXAxis.LabelsImpl = this.xAxisLabelModel;

            this.chartControl1.PrimaryXAxis.CustomLabelsParameter = ChartCustomLabelsParameter.Position;

            //Specifies the mode of displaying the label of the x-axis on intersection.
            this.chartControl1.PrimaryXAxis.LabelIntersectAction = ChartLabelIntersectAction.MultipleRows;

            //Specifies the column width mode for the Column Type chart.
            // this.chartControl1.ColumnWidthMode = ChartColumnWidthMode.RelativeWidthMode;

            // Close the reader and the connection
            myReader.Close();
            myConnection.Close();
            //Turns off the legend.
            this.chartControl1.Legend.Visible = false;

            this.chartControl1.Text = "Highest populated cities in the world";

            // this.chartControl1.Series3D = true;
            this.chartControl1.Spacing = 20;
        }
예제 #13
0
        private void modernButton3_Click(object sender, EventArgs e)
        {
            Log("%TEST%");
            var ew = new ExcelWindow("Test#3");

            ew.spreadsheet1.Open("Data\\Test\\c5.xlsx");
            ew.ShowDialog();
            //ExcelOperator2 ex=new ExcelOperator2(ew.spreadsheet1);
            var s = ew.spreadsheet1.ActiveSheet;
            var l = s.ExportDataTable(s.UsedRange, ExcelExportDataTableOptions.ColumnNames | ExcelExportDataTableOptions.ComputedFormulaValues);
            //MessageBox.Show($"{l.Rows[0][0].ToString()}");
            //ScoreTable st=new ScoreTable(new Dictionary<string, ScoreModel>(),new InputDataIndicator() );
            List <ScoreModel> li = new List <ScoreModel>();

            for (int j = 0; j < l.Rows.Count; j++)
            {
                ScoreModel sm = new ScoreModel();
                for (int i = 0; i < l.Columns.Count; i++)
                {
                    switch (i)
                    {
                    case 0:
                        sm.Name = l.Rows[j][i].ToString();
                        break;

                    case 1:
                        sm.Id = Int32.Parse(l.Rows[j][i].ToString());
                        break;

                    case 2:
                        sm.SumRank = Int32.Parse(l.Rows[j][i].ToString());
                        break;

                    case 3:
                        sm.SumGradeRank = Int32.Parse(l.Rows[j][i].ToString());
                        break;

                    case 4:
                        sm.Zh = Single.Parse(l.Rows[j][i].ToString());
                        break;

                    case 5:
                        sm.ZhRank = Int32.Parse(l.Rows[j][i].ToString());
                        break;

                    case 6:
                        sm.ZhGradeRank = int.Parse(l.Rows[j][i].ToString());
                        break;

                    case 7:
                        sm.M = float.Parse(l.Rows[j][i].ToString());
                        break;

                    case 8:
                        sm.MRank = int.Parse(l.Rows[j][i].ToString());
                        break;

                    case 9:
                        sm.MGradeRank = int.Parse(l.Rows[j][i].ToString());
                        break;

                    case 10:
                        sm.En = float.Parse(l.Rows[j][i].ToString());
                        break;

                    case 11:
                        sm.EnRank = int.Parse(l.Rows[j][i].ToString());
                        break;

                    case 12:
                        sm.EnGradeRank = int.Parse(l.Rows[j][i].ToString());
                        break;

                    case 13:
                        sm.P = float.Parse(l.Rows[j][i].ToString());
                        break;

                    case 14:
                        sm.PRank = int.Parse(l.Rows[j][i].ToString());
                        break;

                    case 15:
                        sm.PGradeRank = int.Parse(l.Rows[j][i].ToString());
                        break;

                    case 16:
                        sm.C = float.Parse(l.Rows[j][i].ToString());
                        break;

                    case 17:
                        sm.CRank = int.Parse(l.Rows[j][i].ToString());
                        break;

                    case 18:
                        sm.CGradeRank = int.Parse(l.Rows[j][i].ToString());
                        break;

                    case 19:
                        sm.Po = float.Parse(l.Rows[j][i].ToString());
                        break;

                    case 20:
                        sm.PoRank = Int32.Parse(l.Rows[j][i].ToString());
                        break;

                    case 21:
                        sm.PoGradeRank = Int32.Parse(l.Rows[j][i].ToString());
                        break;

                    case 22:
                        sm.H = float.Parse(l.Rows[j][i].ToString());
                        break;

                    case 23:
                        sm.HRank = int.Parse(l.Rows[j][i].ToString());
                        break;

                    case 24:
                        sm.HGradeRank = int.Parse(l.Rows[j][i].ToString());
                        break;

                    case 25:
                        sm.G = float.Parse(l.Rows[j][i].ToString());
                        break;

                    case 26:
                        sm.GRank = int.Parse(l.Rows[j][i].ToString());
                        break;

                    case 27:
                        sm.GGradeRank = int.Parse(l.Rows[j][i].ToString());
                        break;

                    case 28:
                        sm.B = float.Parse(l.Rows[j][i].ToString());
                        break;

                    case 29:
                        sm.BRank = int.Parse(l.Rows[j][i].ToString());
                        break;

                    case 30:
                        sm.BGradeRank = int.Parse(l.Rows[j][i].ToString());
                        break;

                    default: throw new NotImplementedException();
                        break;
                    }
                }
                li.Add(sm);
                //MessageBox.Show($"%C# {name}%=>%JSON%:\r\n{sm.ToString()}");
            }
            IList <(NfSubjects, float)> aveList = Analyzer.Average(li);
            //BindingList<(NfSubjects, float)> aveBindingList = Analyzer.Average(li);//todo;
            IList <(NfSubjects, float)>   sumList  = Analyzer.Sum(li);
            IList <(NfSubjects, float[])> modeList = Analyzer.Mode(li);
            IList <(NfSubjects, double)>  midList  = Analyzer.Mid(li);

            Log("Average:\r\n" + string.Join(",", aveList));
            Log("Sum:\r\n" + string.Join(",", sumList));
            Log("Mode:");
            foreach (var mode in modeList)
            {
                Log($"{mode.Item1.ToString()}:{string.Join(",",mode.Item2)}");
            }
            //Log("Mode:\r\n" + string.Join(",",modeList));
            Log("Mid:\r\n" + string.Join(",", midList));
            //MessageBox.Show(aveList[0].Item2.ToString());
            DataVisualization dv = new DataVisualization();

            dv.lDChartDataSourceBindingSource.DataSource = new LDChartDataSource(aveList);

            #region Data Convert:
            ChartSeries                 cs     = new ChartSeries("%Title%");
            ChartDataBindModel          cdbm   = new ChartDataBindModel(aveList);
            ChartDataBindAxisLabelModel cdbalm = new ChartDataBindAxisLabelModel(aveList);
            cdbm.XName       = "Item1";
            cdbalm.LabelName = "Item1";
            cdbm.YNames      = new String[] { "Item2" };
            cs.SeriesModel   = cdbm;
            dv.chartControl1.Series.Add(cs);
            dv.chartControl1.PrimaryXAxis.LabelsImpl = cdbalm;
            dv.chartControl2.Series.Add(cs);
            dv.chartControl2.PrimaryXAxis.LabelsImpl = cdbalm;
            dv.chartControl2.PrimaryYAxis.Range      = new MinMaxInfo(0, 150, 100);
            #endregion

            dv.Show();

            //#region PPT Output

            //IPresentation ip = Presentation.Create();
            //IList<double> avelist_ppt=new List<double>();
            //foreach (var ii in aveList)
            //{
            //	avelist_ppt.Add(ii.Item2);
            //}
            //ISlide sl = ip.Slides.Add(SlideLayoutType.Blank);
            //IPresentationChart ct = sl.Shapes.AddChart(avelist_ppt, 5, 5, 100, 100);
            //Spire.Presentation.Presentation ppt =new Spire.Presentation.Presentation(File.Open($"{new Random().Next()}.pptx",FileMode.Create,FileAccess.ReadWrite),FileFormat.Pptx2010);
            //var cts = ppt.Slides[0].Shapes.AppendChart(ChartType.Column3D,new RectangleF(5,5,200,200));

            //foreach (var ave in avelist_ppt)
            //{
            //	//cts.Series.Append(ave);
            //	cts.Series[0].Values.Add(ave);
            //}

            //ip.Save($"{new Random().Next()}.pptx");
            //#endregion

            #region ExcelChart

            ExcelEngine  ee  = new ExcelEngine();
            IApplication xls = ee.Excel;
            xls.DefaultVersion = Syncfusion.XlsIO.ExcelVersion.Excel2016;
            IWorkbook   wb    = xls.Workbooks.Open("Data\\Test\\c5.xlsx", ExcelOpenType.Automatic);
            IWorksheet  ws    = wb.Worksheets.Create("Chart");
            IChartShape chart = ws.Charts.Add();
            /////////////////////////////////////////////////////
            //IChartSerie serie = chart.Series.Add(Syncfusion.XlsIO.ExcelChartType.Column_Clustered);
            //chart.ChartType = Syncfusion.XlsIO.ExcelChartType.Column_Clustered;
            IList <string> xave = new List <string>();
            IList <object> yave = new List <object>();
            int            allavei = Int32.MaxValue, allmidi = Int32.MaxValue;
            for (var index = 0; index < aveList.Count; index++)
            {
                if (aveList[index].Item1 == NfSubjects.All)
                {
                    allavei = index;
                }
                var ave = aveList[index];
                xave.Add(ave.Item1.Name());
                yave.Add(ave.Item2);
            }

            //serie.EnteredDirectlyValues = yave.ToArray();
            //serie.Name = "平均分";
            //serie.EnteredDirectlyCategoryLabels = xave.ToArray();
            ChartGen.GenChart(chart, xave.ToArray(), yave.ToArray(), "平均分", ExcelChartType.Column_Clustered);
            ////////////////////////////////////////////////
            //IChartSerie seriemid = chart.Series.Add(Syncfusion.XlsIO.ExcelChartType.Column_Clustered);
            //chart.ChartType = Syncfusion.XlsIO.ExcelChartType.Column_Clustered;
            IList <string> xmid = new List <string>();
            IList <object> ymid = new List <object>();
            for (var index = 0; index < midList.Count; index++)
            {
                if (midList[index].Item1 == NfSubjects.All)
                {
                    allmidi = index;
                }
                var mid = midList[index];
                xmid.Add(mid.Item1.Name());
                ymid.Add(mid.Item2);
            }
            ChartGen.GenChart(chart, xmid.ToArray(), ymid.ToArray(), "中位分", ExcelChartType.Column_Clustered);
            //{{{{{{{{{{{{{{
            xave.RemoveAt(allavei);
            yave.RemoveAt(allavei);
            xmid.RemoveAt(allmidi);
            ymid.RemoveAt(allmidi);
            IChartShape leida = ws.Shapes.AddChart();

            ChartGen.GenChart(leida, xave.ToArray(), yave.ToArray(), "平均分", ExcelChartType.Radar);
            ChartGen.GenChart(leida, xmid.ToArray(), ymid.ToArray(), "中位分", ExcelChartType.Radar);
            leida.Name       = "学科成绩分布1";
            leida.ChartTitle = "学科成绩分布1";
            //}}}}}}}}}}}}}}
            //{{{{{{{{{{{{{{
            var         xyave  = Analyzer.ReArrangeData(aveList);
            var         xymid  = Analyzer.ReArrangeData(midList);
            IChartShape leida2 = ws.Shapes.AddChart();

            ChartGen.GenChart(leida2, xyave.Item1, xyave.Item2, "平均分", ExcelChartType.Radar);
            ChartGen.GenChart(leida2, xymid.Item1, xymid.Item2, "中位分", ExcelChartType.Radar);
            leida2.Name       = "学科成绩分布2";
            leida2.ChartTitle = "学科成绩分布2";
            //}}}}}}}}}}}}}}
            var ordered = li.OrderBy(pp => pp.Sum);
            ChartGen.GenChart(ws.Shapes.AddChart(), ordered.Select(sm => (object)(sm.Name)).ToArray(), ordered.Select(sm => (object)(sm.Sum ?? 0)).ToArray(), "总分", ExcelChartType.Column_3D);
            //seriemid.EnteredDirectlyValues = ymid.ToArray();
            //seriemid.Name = "中位分";
            //seriemid.EnteredDirectlyCategoryLabels = xmid.ToArray();
            /////////////////////////////////////////////////
            xls.Save("output.xlsx");
            wb.Close();
            ee.Dispose();
            #endregion
        }