阳江企业网站排名优化,深圳中小企业网站制作,可以免费打开网站的软件,成都网站设计开发做得好代码太多了我就不展示了#xff0c;贴一些比较有代表性的
成品效果展示#xff1a; Excel转Chart示例 简单说一下我的思路
\
先把Excel数据展示在dataGridView控件上 XLIST 为 X轴的数据
XLIST 为 Y轴的数据
ZLIST 为 展示的数据进行数据处理点击展示即可
// 将Excel数…代码太多了我就不展示了贴一些比较有代表性的
成品效果展示 Excel转Chart示例 简单说一下我的思路
\
先把Excel数据展示在dataGridView控件上 XLIST 为 X轴的数据
XLIST 为 Y轴的数据
ZLIST 为 展示的数据进行数据处理点击展示即可
// 将Excel数据复制到DataTable
DataTable dataTable new DataTable();private Liststring XList new Liststring();
private Listdouble YList new Listdouble();
private Listdouble ZList new Listdouble();series.ChartType SeriesChartType.Column; // 柱状图
series.ChartType SeriesChartType.Line; // 折线图 (趋势图 SORT Y 轴)
series.ChartType SeriesChartType.Bar; // 横条图
series.ChartType SeriesChartType.BoxPlot; // 箱线图//切换主窗导致卡顿解决方案private void Form1_Resize(object sender, EventArgs e){//当主窗体变更大小时解决多控件加载卡顿//重置窗口布局//在窗体加载时候 解决闪烁问题//将图像绘制到缓冲区 减少闪烁this.DoubleBuffered true;//设置本窗体SetStyle(ControlStyles.UserPaint, true);SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景.SetStyle(ControlStyles.DoubleBuffer, true); // 双缓冲}//打开文件路径获取Excel数据至dataGridView
string excelFilePath textBox1.Text;
//使用方式引用 Microsoft.Office.Interop.Excel 调用Excel读取
//优点不受Excel版本限制可指定sheet读取
//缺点读取速度慢几千数据10分钟
//ExcelToDataGridView.FillDataGridViewFromExcel(excelFilePath, dataGridView1);
// 方式一 OLEDB读取 数据库引擎
// 优点读取速度快依据sheet排序读取
// 缺点对于Excel版本依赖强无法读取指定sheet
// 错误提示本地计算机未指定 Microsoft.ACE.OLEDB.12.0
// 解决方法win7(64位) office 2010(64位) 更改目标平台为X86
// win10(64位) office 2010(64位) 更改目标平台无效下载安装AccessDatabaseEngine.exeif (String.IsNullOrEmpty(textBox1.Text)){//空不调用}else{dataTable ReadExcelFile(excelFilePath);}private DataTable ReadExcelFile(string excelFilePath){string connectionString $ProviderMicrosoft.ACE.OLEDB.12.0;Data Source {excelFilePath};Extended Properties\Excel 12.0 Xml;HDRYES;\;using (OleDbConnection conn new OleDbConnection(connectionString)){conn.Open();OleDbCommand cmd new OleDbCommand(SELECT * FROM [Sheet1$], conn);OleDbDataAdapter adapter new OleDbDataAdapter(cmd);DataTable dataTable new DataTable();adapter.Fill(dataTable);return dataTable;}}//设定折线图均值
addLateline(chart1, max, 最大值);
addLateline(chart1, roundedAverage, 平均值);
addLateline(chart1, min, 最小值);private void addLateline(Chart chart, double y, string name)
{//chart.ChartAreas[0].AxisX.StripLines.Clear();StripLine stripline new StripLine();//stripline.Interval 1; //重复的次数 stripline.IntervalOffset y; //横线y轴位置stripline.Text name : y;stripline.TextOrientation TextOrientation.Horizontal;stripline.TextAlignment StringAlignment.Near; // 文本左对齐stripline.StripWidth 0.15; //线宽度if (name ! 平均值){ stripline.BackColor System.Drawing.Color.Red; }else{ stripline.BackColor System.Drawing.Color.Blue; }stripline.BorderDashStyle ChartDashStyle.Solid; //实线chart.ChartAreas[0].AxisY.StripLines.Add(stripline); //横线//chart.ChartAreas[0].AxisX.StripLines.Add(stripline);//竖线chart.ChartAreas[0].AxisY.MinorGrid.Enabled true; // 启用Y轴次刻度线chart.ChartAreas[0].AxisY.MajorTickMark.Size 2; // 设置Y轴主刻度线大小chart.ChartAreas[0].AxisY.MinorTickMark.Size 1; // 设置Y轴次刻度线大小chart.ChartAreas[0].AxisY.MinorGrid.LineDashStyle ChartDashStyle.Dot; // 设置Y轴次刻度线的样式chart.ChartAreas[0].AxisY.MinorGrid.LineColor System.Drawing.Color.LightGray; // 设置Y轴次刻度线的颜色// 开启数据点标签的显示}//开启X轴的左右拖拽
chart1.ChartAreas[0].AxisX.ScaleView.Size 10; // 设置了 X 轴上显示的数据点的数量
chart1.ChartAreas[0].AxisX.ScaleView.MinSize 5; // 设置或获取X轴的视图的最小尺寸
chart1.ChartAreas[0].AxisX.ScrollBar.IsPositionedInside false; // 滚动条位于图表外侧// 折线图获取不同的随机颜色
bool flag false;
System.Drawing.Color randomColor;while (true)
{randomColor ColorHelper.GetRandomColor();for (int i 0; i YList.Count / XList.Count; i){if (chart1.Series[i].Color randomColor){flag false;break;}else{ flag true;series.Color randomColor;break;}}if ( flag true){break;}
};series.ChartType SeriesChartType.Line;
System.Drawing.Color seriesColor GetSeriesColor(chart1, series.Name);//箱线图的计算逻辑//这个就不把代码带出来了 自己算一算就行了//奇数时
//17,19,22,24,25,28,34,35,36,37,38.
//除异常点以外的数据中最小 17
//除异常点以外的数据中最大 38
//中位数 28 // 2 * (当前个数 1/ 4 位置
//下四分位数 22 // 1 * (当前个数 1/ 4 位置
//上四分位数 36 // 3 * (当前个数 1/ 4 位置
//异常点(算的值不在此范围内都算异常值)
//22 - 1.5*(36 - 22 ) 1;
//36 1.5*(36 - 22 ) 57;//偶数
//12,15,17,19,20,23,25,28,30,33,34,35,36,37
//Q1所在的位置1141/43.75, 1.25 2.75
//Q2所在的位置2141/47.5, 2.5
//Q3所在的位置3141/411.25. 3.75 5.5//下四分位数Q10.25×第三项0.75×第四项0.25×170.75×1918.5
//中位数 Q20.5×第七项0.5×第八项0.5×250.5×2826.5
//上四分位数Q30.75×第十一项0.25×第十二项0.75×340.25×3534.25.//18.5 - 1.5*(34.25 - 18.5 ) 5.125;
//34.25 1.5*(34.25 - 18.5) 57.875;
//string result 下界下四分位数中位数上四分位数上界异常点;
作为新手我解决不了的问题为我转换成3D导致左右拖拽框失效 所以我给注释了如下
private void radioButton1_Click(object sender, EventArgs e)
{if (rbcheck1)//if (radioButton1.Checked){rbcheck1 false;radioButton1.Checked false;// 假设chart是一个Chart控件实例chart1.ChartAreas[0].Area3DStyle.Enable3D false;chart1.ChartAreas[0].Area3DStyle.Inclination 30;chart1.ChartAreas[0].Area3DStyle.IsClustered true;chart1.ChartAreas[0].Area3DStyle.IsRightAngleAxes false;chart1.ChartAreas[0].Area3DStyle.Perspective 30;chart1.ChartAreas[0].Area3DStyle.Rotation 30;chart1.ChartAreas[0].Area3DStyle.WallWidth 0;//开启X轴的左右拖拽chart1.ChartAreas[0].AxisX.ScaleView.Size 10; // 设置了 X 轴上显示的数据点的数量chart1.ChartAreas[0].AxisX.ScaleView.MinSize 5; // 设置或获取X轴的视图的最小尺寸chart1.ChartAreas[0].AxisX.ScrollBar.IsPositionedInside false; // 滚动条位于图表外侧chart1.ChartAreas[0].InnerPlotPosition.Auto true;}else{radioButton1.Checked true;rbcheck1 true;chart1.ChartAreas.Clear();ChartArea chartArea1 new ChartArea();设置为3D效果//chartArea1.InnerPlotPosition.Auto false;chartArea1.Area3DStyle.Enable3D true; // 启用3D效果chartArea1.Area3DStyle.IsClustered true; // 设置为集群样式chartArea1.Area3DStyle.Rotation 20; // 设置旋转角度chartArea1.Area3DStyle.Perspective 10; // 设置透视角度chartArea1.Area3DStyle.Inclination 15; // 设置倾斜角度chartArea1.Area3DStyle.LightStyle LightStyle.Realistic; // 设置光源样式chartArea1.Area3DStyle.WallWidth 0; // 设置墙宽chartArea1.Area3DStyle.IsRightAngleAxes false; // 设置是否为右角轴chartArea1.AxisX.ScaleView.Size 10; // 设置了 X 轴上显示的数据点的数量chartArea1.AxisX.ScaleView.MinSize 5; // 设置或获取X轴的视图的最小尺寸chartArea1.AxisX.ScrollBar.IsPositionedInside false; // 滚动条位于图表外侧chart1.ChartAreas.Add(chartArea1);}
}
一柱状图 二折线图 三直方图 四横条图 五箱线图 六趋势图