C#根据excel数据绘制坐标图的方法

 更新时间:2022年02月17日 09:40:48   作者:神奇小白  
这篇文章主要为大家详细介绍了C#根据excel数据绘制坐标图的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了C#根据excel数据绘制坐标图的具体代码,供大家参考,具体内容如下

效果如下图

界面

代码

using System;
using System.Collections;
using System.Collections.Generic;
using System.Drawing;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;

namespace WindowsFormsApp2
{
    public partial class Form1 : Form
    {
        //x和y轴数据
        double[] x = new double[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
        double[] y = new double[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
        List<Double> xList = new List<Double>();
        List<Double> yList = new List<Double>();
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string fname = "";
            OpenFileDialog fdlg = new OpenFileDialog();
            fdlg.Title = "Excel File Dialog";
            fdlg.InitialDirectory = @"c:\";
            fdlg.Filter = "All files (*.*)|*.*|All files (*.*)|*.*";
            fdlg.FilterIndex = 2;
            fdlg.RestoreDirectory = true;
            if (fdlg.ShowDialog() == DialogResult.OK)
            {
                fname = fdlg.FileName;
            }


            Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
            Microsoft.Office.Interop.Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(fname);
            Microsoft.Office.Interop.Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1];
            Microsoft.Office.Interop.Excel.Range xlRange = xlWorksheet.UsedRange;

            int rowCount = xlRange.Rows.Count;
            int colCount = xlRange.Columns.Count;

            for (int i = 1; i <= rowCount; i++)
            {
                double px = System.Convert.ToDouble(xlRange.Cells[i, 1].Value2.ToString());
                double py = System.Convert.ToDouble(xlRange.Cells[i, 2].Value2.ToString());
                Console.Out.WriteLine("第" + i + "行 :" + px + "," + py);
                xList.Add(px);
                yList.Add(py);
                //for (int j = 1; j <= colCount; j++)
                //{
                //write the value to the Grid  
                //if (xlRange.Cells[i, j] != null && xlRange.Cells[i, j].Value2 != null)
                //{
                //xList.Add(xlRange.Cells[i, j]);

                // Console.WriteLine(xlRange.Cells[i, j].Value2.ToString());
                //add useful things here! 
                // }
                //}
            }
            chart1.Series[0].Points.DataBindXY(xList, yList);


            //cleanup  
            GC.Collect();
            GC.WaitForPendingFinalizers();

            //rule of thumb for releasing com objects:  
            //  never use two dots, all COM objects must be referenced and released individually  
            //  ex: [somthing].[something].[something] is bad  

            //release com objects to fully kill excel process from running in the background  
            Marshal.ReleaseComObject(xlRange);
            Marshal.ReleaseComObject(xlWorksheet);

            //close and release  
            xlWorkbook.Close();
            Marshal.ReleaseComObject(xlWorkbook);

            //quit and release  
            xlApp.Quit();
            Marshal.ReleaseComObject(xlApp);


        }
        //Graphics g = this.CreateGraphics();
        //Pen pen = new Pen(Brushes.Red, 1);
        //g.DrawLine(pen, new Point(30, 50), new Point(250, 250));

        private void Form1_Load(object sender, EventArgs e)
        {
            //控件chart背景色
            //chart1.BackColor = Color.Transparent;//Color.Transparent系统定义的颜色
            //chart1.BackColor = Color.White;
            //图表标题,
            chart1.Titles.Add("测试数据"); //添加title到titleCollection集合的末尾
            chart1.Titles[0].ForeColor = Color.DarkBlue;//设置title的文本颜色
            chart1.Titles[0].Font = new Font("微软雅黑", 15f, FontStyle.Regular);//设置title的字体
            chart1.Titles[0].Alignment = ContentAlignment.TopCenter;//设置title的对齐方式

            //图表区chartAreas
            chart1.ChartAreas[0].BackColor = Color.White;//chartAreas背景颜色
            chart1.ChartAreas[0].BorderColor = Color.Red;//chartAreas边框颜色
            chart1.ChartAreas[0].BackGradientStyle = GradientStyle.None;//chartAreas背景渐变,不使用


            //AxisX表示图表的主x轴; 
            chart1.ChartAreas[0].AxisX.LineColor = Color.Red; //线条颜色
            chart1.ChartAreas[0].AxisX.Interval = 0.5;//设置x轴的间隔
            chart1.ChartAreas[0].AxisX.Minimum = 0;
            chart1.ChartAreas[0].AxisX.Maximum = 25;//Y轴坐标固定,不会随绑定的数据而变

            chart1.ChartAreas[0].AxisX.LabelStyle.Interval = 1;//设置X轴标签间距,如果不设置默认为x轴的间隔
            chart1.ChartAreas[0].AxisX.IsLabelAutoFit = false;
            chart1.ChartAreas[0].AxisX.LabelStyle.Font = new Font("微软雅黑", 13f, FontStyle.Regular); //标签字体

            //设置x轴标题的字体样式和颜色
            chart1.ChartAreas[0].AxisX.Title = "圆周位置,mm";
            chart1.ChartAreas[0].AxisX.TitleFont = new Font("微软雅黑", 15f, FontStyle.Regular);// 标题字体
            chart1.ChartAreas[0].AxisX.TitleForeColor = Color.Blue; //轴标题颜色
            chart1.ChartAreas[0].AxisX.TextOrientation = TextOrientation.Horizontal;//轴标题文本方向
            chart1.ChartAreas[0].AxisX.TitleAlignment = StringAlignment.Far;//轴标题对齐方式
            //X轴网格线
            chart1.ChartAreas[0].AxisX.MajorGrid.Enabled = false; //启用网格刻度线,一排竖线
            //chart1.ChartAreas[0].AxisX.MajorGrid.LineColor = ColorTranslator.FromHtml("#2c4c6d"); //线条颜色
            //chart1.ChartAreas[0].AxisX.MajorGrid.LineColor = Color.Yellow;

            //y轴
            chart1.ChartAreas[0].AxisY.LineColor = Color.Red; //线条颜色
            chart1.ChartAreas[0].AxisY.Interval = 0.05;//设置Y轴的间隔
            chart1.ChartAreas[0].AxisY.Minimum = 5;//Y轴坐标固定,不会随绑定的数据而变
            chart1.ChartAreas[0].AxisY.Maximum = 6.35;//Y轴坐标固定,不会随绑定的数据而变
            chart1.ChartAreas[0].AxisY.LabelStyle.Interval = 0.05;//设置X轴标签间距,如果不设置默认为x轴的间隔
            //Y坐标轴标题
            chart1.ChartAreas[0].AxisY.Title = "圆周半径,mm"; //轴标题
            chart1.ChartAreas[0].AxisY.TitleFont = new Font("微软雅黑", 15f, FontStyle.Regular); //标题字体
            chart1.ChartAreas[0].AxisY.TitleForeColor = Color.Blue; //轴标题颜色
            chart1.ChartAreas[0].AxisY.TextOrientation = TextOrientation.Rotated270; //标题文本方向
            chart1.ChartAreas[0].AxisY.TitleAlignment = StringAlignment.Far;
            //y轴标签样式
            chart1.ChartAreas[0].AxisY.LabelStyle.ForeColor = Color.Black; //标签颜色
            chart1.ChartAreas[0].AxisY.LabelStyle.Font = new Font("微软雅黑", 13f, FontStyle.Regular); //标签字体
            //Y轴网格线条
            chart1.ChartAreas[0].AxisY.MajorGrid.Enabled = false;//一排横线
            //chart1.ChartAreas[0].AxisY.MajorGrid.LineColor = Color.Yellow;

            //#VAL为y轴的值,#VALX为x轴数据
            //chart1.Series[0].Label = "hello";//数据点标签文本  
            //chart1.Series[0].Label = "#VAL";//数据点标签为其对于的y值
            //chart1.Series[0].LabelBackColor = Color.Blue; //数据点标签背景色
            //chart1.Series[0].LabelForeColor = Color.White; //数据点标签颜色
            //chart1.Series[0].Color = Color.Red; //数据点颜色,数据点之间曲线的颜色
            //chart1.Series[0].BorderWidth = 3;//数据点边框宽度,曲线的宽度
            //chart1.Series[0].ToolTip = "#VALX:#VAL";//鼠标移动到对应点显示数值 元素的工具提示
            chart1.Series[0].ChartType = SeriesChartType.Spline; //图表类型(折线) 绘制该序列的图表类型

            Legend legend = new Legend("波形显示");//初始化具有指定的图例名称
            legend.Title = "legendTitle"; //图例标题文本
            chart1.Series[0].LegendText = legend.Name; //图例中项的文本
            chart1.Legends.Add(legend);
            chart1.Legends[0].Position.Auto = false; //图例矩形位置 - 元素自动定位标志

            //绑定数据
            //数据绑定到指定数据源的第一列的x值和y值的集合的数据点
            chart1.Series[0].Color = Color.Black;

            chart1.Series[0].Points.DataBindXY(x, y);
        }
    }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • C# 设计模式系列教程-代理模式

    C# 设计模式系列教程-代理模式

    代理模式对客户端来说,隐藏了真实对象的细节及复杂性,实现了客户端(调用者)与真实对象的松耦合,提高了运行速度。
    2016-06-06
  • c#文件操作示例带详细注释

    c#文件操作示例带详细注释

    System.IO.Directory类和System.DirectoryInfo类主要提供关于目录的各种操作,使用时需要引用System.IO命名空间。下面通过程序实例来介绍其主要属性和方法
    2014-01-01
  • RabbitMQ的配置与安装教程全纪录

    RabbitMQ的配置与安装教程全纪录

    这篇文章主要给大家介绍了关于RabbitMQ的配置与安装的相关资料,文中通过示例代码以及图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-07-07
  • 使用WPF实现加载动画效果

    使用WPF实现加载动画效果

    在应用程序加载大量数据或执行复杂操作时,为用户提供一个良好的加载体验变得至关重要,加载动画是其中一个有效的方式,下面我们就来看看如何使用WPF实现简单的加载动画效果吧
    2024-03-03
  • asp.net之生成验证码的方法集锦(一)

    asp.net之生成验证码的方法集锦(一)

    现在很多网站都有注册登录的页面,为了更好的满足用户体验和网站的安全性,很多网站都采用动态生成的图形码或者是附加码进行验证,这篇文章主要就是介绍生成验证码的方法,需要的朋友可以参考下
    2015-08-08
  • C#中的for和foreach的性能对比

    C#中的for和foreach的性能对比

    这篇文章主要介绍了C#中的for和foreach的性能对比,在C#中,for和foreach是两种常用的循环结构,用于迭代集合中的元素,尽管它们在功能上相似,但它们在性能、空间效率和垃圾回收(GC)方面有一些区别,需要的朋友可以参考下
    2023-10-10
  • C#中可枚举类型详解

    C#中可枚举类型详解

    这篇文章主要介绍了C#中可枚举类型,IEnumerable和IEnumerator接口j及其泛型实现和迭代器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • C#操作配置文件app.config、web.config增删改

    C#操作配置文件app.config、web.config增删改

    这篇文章介绍了C#操作配置文件app.config、web.config增删改的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • C#实现的简单随机数产生器功能示例

    C#实现的简单随机数产生器功能示例

    这篇文章主要介绍了C#实现的简单随机数产生器功能,涉及C#简单界面布局、事件响应及随机数生成相关操作技巧,需要的朋友可以参考下
    2017-09-09
  • c# 编写的简单飞行棋游戏

    c# 编写的简单飞行棋游戏

    这个简单的飞行棋游戏主要是讲的方法怎么应用,充分的去理解方法和方法的调用。整体收获还是很大的。感兴趣的朋友可以参考下
    2021-06-06

最新评论