zoukankan      html  css  js  c++  java
  • C#处理chart

    C#处理owc chart

    ---------------------------------------------ASP.NET版-----------------------------
    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using Microsoft.Office.Interop.Owc11;
    using System.Data.OleDb;
    using System.Collections;

    public partial class _Default : System.Web.UI.Page
    {
       
        protected void Page_Load(object sender, EventArgs e)
        {
            DropDownList1.Items.Add("chChartTypeColumnClustered");
            DropDownList1.Items.Add("chChartTypeColumn3D");
            DropDownList1.Items.Add("chChartTypeBarClustered");
            DropDownList1.Items.Add("chChartTypeBar3D");
            DropDownList1.Items.Add("chChartTypeArea");
            DropDownList1.Items.Add("chChartTypeArea3D");
            DropDownList1.Items.Add("chChartTypeDoughnut");
            DropDownList1.Items.Add("chChartTypeLineStacked");
            DropDownList1.Items.Add("chChartTypeLine3D");
            DropDownList1.Items.Add("chChartTypeLineMarkers");
            DropDownList1.Items.Add("chChartTypePie");
            DropDownList1.Items.Add("chChartTypePie3D");
            DropDownList1.Items.Add("chChartTypeRadarSmoothLine");
            DropDownList1.Items.Add("chChartTypeSmoothLine");
            //DropDownList1.SelectedIndex = 0;
            int num = DropDownList1.SelectedIndex;
            OleDbDataReader dr = GetList("select TOP 10 OrderDate,ShipVia from orders order by orderid");
            data_Chart(dr, 0, Server.MapPath("test.gif"), 800, 600);
            ImageMap1.ImageUrl = "~/test.gif";
        }
        /// <summary>
        /// 生成图表
        /// </summary>
        /// <param name="sdr">数据源(sqlDataReader)</param>
        /// <param name="intChartTypes">图片类型</param>
        /// <param name="filePath">图片路径</param>
        /// <param name="chartWidth">图片宽度</param>
        /// <param name="chartHeight">图片高度</param>
        /// <returns>图片存放的相对路径</returns>
        public string data_Chart(OleDbDataReader sdr, int intChartTypes, string filePath, int chartWidth, int chartHeight)
        {
            ArrayList[] data_al = new ArrayList[sdr.FieldCount];

            for (int i = 0; i < sdr.FieldCount; i++)
            {
                data_al[i] = new ArrayList();
            }

            while (sdr.Read())
            {
                for (int i = 0; i < sdr.FieldCount; i++)
                {
                    data_al[i].Add(sdr.GetValue(i).ToString());
                }
            }
            sdr.Close();
            ChartSpace objCSpace = new ChartSpaceClass();

            //在ChartSpace对象中添加图表,Add方法返回chart对象
            ChChart objChart = objCSpace.Charts.Add(0);

            //指定图表是否需要图例
            objChart.HasLegend = true;
            objChart.HasTitle = true;
            objChart.Title.Caption = "分析图";

            //指定图表的类型。类型由OWC.ChartChartTypeEnum枚举值得到
            ChartChartTypeEnum[] chartTypes = new ChartChartTypeEnum[]{ ChartChartTypeEnum.chChartTypeColumnClustered,
            ChartChartTypeEnum.chChartTypeColumn3D,
            ChartChartTypeEnum.chChartTypeBarClustered,
            ChartChartTypeEnum.chChartTypeBar3D,
            ChartChartTypeEnum.chChartTypeArea,
            ChartChartTypeEnum.chChartTypeArea3D,
            ChartChartTypeEnum.chChartTypeDoughnut,
            ChartChartTypeEnum.chChartTypeLineStacked,
            ChartChartTypeEnum.chChartTypeLine3D,
            ChartChartTypeEnum.chChartTypeLineMarkers,
            ChartChartTypeEnum.chChartTypePie,
            ChartChartTypeEnum.chChartTypePie3D,
          ChartChartTypeEnum.chChartTypeRadarSmoothLine,
          ChartChartTypeEnum.chChartTypeSmoothLine};

            objChart.Type = chartTypes[intChartTypes];
            //string[] chartTypesCh = new string [] {"垂直柱状统计图","3D垂直柱状统计图","水平柱状统计图","3D水平柱状统计图","区域统计图","3D区域统计图","中空饼图","折线统计图","3D折线统计图","折线带点统计图","饼图","3D饼图","网状统计图","弧线统计图"};

            for (int i = 0; i < data_al.Length - 1; i++)
            {
                //在ChartSpace对象中添加图表,Add方法返回chart对象
                objChart.SeriesCollection.Add(i);
                objChart.SeriesCollection[i].DataLabelsCollection.Add();
                string strSeriesName = "" + (i + 1);
                //给定series的名字
                objChart.SeriesCollection[i].SetData(ChartDimensionsEnum.chDimSeriesNames,
                 (int)ChartSpecialDataSourcesEnum.chDataLiteral, strSeriesName);
                //给定分类
                objChart.SeriesCollection[i].SetData(ChartDimensionsEnum.chDimCategories,
                 (int)ChartSpecialDataSourcesEnum.chDataLiteral, data_al[0].ToArray());

                //给定值
                objChart.SeriesCollection[i].SetData
                 (ChartDimensionsEnum.chDimValues,
                 (int)ChartSpecialDataSourcesEnum.chDataLiteral, data_al[i + 1].ToArray());

                objChart.SeriesCollection[i].Caption = "Example";

            }
            //输出成GIF文件.
            //string strAbsolutePath = filePath + "\\temp\\test.gif";

            objCSpace.ExportPicture(filePath, "GIF", chartWidth, chartHeight);

            //创建GIF文件的相对路径.
            string strRelativePath;
            //strRelativePath = @"..\Analyse\temp\test.gif";
            strRelativePath = filePath;
            return strRelativePath;
        }
        protected void Button2_Click(object sender, EventArgs e)
        {
            int num = DropDownList1.SelectedIndex;
            OleDbDataReader dr = GetList("select TOP 10 OrderDate,ShipVia from orders order by orderid");
            data_Chart(dr, num, Server.MapPath("test.gif"), 800, 600);
            ImageMap1.ImageUrl = "~/test.gif";
        }
        public OleDbDataReader GetList(string Sql)
        {
            OleDbConnection myConnection = new OleDbConnection("Provider=SQLOLEDB;server=192.168.0.15;uid=sa;pwd=sa; database=Northwind;");
            OleDbCommand myCommand = new OleDbCommand(Sql, myConnection);
            myConnection.Open();
            OleDbDataReader result = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
            return result;
        }
    }


    --------------------------------------c#版----------------------------
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using Microsoft.Office.Interop.Owc11;
    using System.Data.OleDb;
    using System.Collections;

    namespace OWC
    {
        public partial class ADOchart : Form
        {
            public ADOchart()
            {
                InitializeComponent();
                //string[] chartTypesCh = new string [] {"垂直柱状统计图","3D垂直柱状统计图","水平柱状统计图","3D水平柱状统计图","区域统计图","3D区域统计图","中空饼图","折线统计图","3D折线统计图","折线带点统计图","饼图","3D饼图","网状统计图","弧线统计图"};
                comboBox1.Items.Add("垂直柱状统计图");
                comboBox1.Items.Add("3D垂直柱状统计图");
                comboBox1.Items.Add("水平柱状统计图");
                comboBox1.Items.Add("3D水平柱状统计图");
                comboBox1.Items.Add("区域统计图");
                comboBox1.Items.Add("3D区域统计图");
                comboBox1.Items.Add("中空饼图");
                comboBox1.Items.Add("折线统计图");
                comboBox1.Items.Add("3D折线统计图");
                comboBox1.Items.Add("折线带点统计图");
                comboBox1.Items.Add("饼图");
                comboBox1.Items.Add("3D饼图");
                comboBox1.Items.Add("网状统计图");
                comboBox1.Items.Add("弧线统计图");
                comboBox1.SelectedIndex = 0;
            }

            private void button1_Click(object sender, EventArgs e)
            {
                int num = comboBox1.SelectedIndex;
                OleDbDataReader dr = GetList("select top 10 OrderDate,ShipVia from orders order by orderid");
                data_Chart(dr, num, Application.StartupPath+"test.gif", 800, 600);
                MessageBox.Show("完成");
            }
            public OleDbDataReader GetList(string Sql)
            {
                OleDbConnection myConnection = new OleDbConnection("Provider=SQLOLEDB;server=192.168.0.15;uid=sa;pwd=sa; database=Northwind;");
                OleDbCommand myCommand = new OleDbCommand(Sql, myConnection);
                myConnection.Open();
                OleDbDataReader result = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
                return result;
            }
            public string data_Chart(OleDbDataReader sdr, int intChartTypes, string filePath, int chartWidth, int chartHeight)
            {
                ArrayList[] data_al = new ArrayList[sdr.FieldCount];
                for (int i = 0; i < sdr.FieldCount; i++)
                {
                    data_al[i] = new ArrayList();
                }
                while (sdr.Read())
                {
                    for (int i = 0; i < sdr.FieldCount; i++)
                    {
                        data_al[i].Add(sdr.GetValue(i).ToString());
                    }
                }
                sdr.Close();
                //清空上一次存在的图例
                axChartSpace1.Clear();
                ChartSpace objCSpace = new ChartSpaceClass();

                //在ChartSpace对象中添加图表,Add方法返回chart对象
               // ChChart objChart = objCSpace.Charts.Add(0);//保存图片用
                ChChart objChart = axChartSpace1.Charts.Add(0);//界面上用

                //指定图表是否需要图例
                objChart.HasLegend = true;
                objChart.HasTitle = true;
                objChart.Title.Caption = "分析图";
                //xy轴说明
                objChart.Axes[0].HasTitle = true;
                objChart.Axes[0].Title.Caption = "OrderDate";
                objChart.Axes[1].HasTitle = true;
                objChart.Axes[1].Title.Caption = "ShipVia";
                //指定图表的类型。类型由OWC.ChartChartTypeEnum枚举值得到
                ChartChartTypeEnum[] chartTypes = new ChartChartTypeEnum[]{ ChartChartTypeEnum.chChartTypeColumnClustered,
                ChartChartTypeEnum.chChartTypeColumn3D,
                ChartChartTypeEnum.chChartTypeBarClustered,
                ChartChartTypeEnum.chChartTypeBar3D,
                ChartChartTypeEnum.chChartTypeArea,
                ChartChartTypeEnum.chChartTypeArea3D,
                ChartChartTypeEnum.chChartTypeDoughnut,
                ChartChartTypeEnum.chChartTypeLineStacked,
                ChartChartTypeEnum.chChartTypeLine3D,
                ChartChartTypeEnum.chChartTypeLineMarkers,
                ChartChartTypeEnum.chChartTypePie,
                ChartChartTypeEnum.chChartTypePie3D,
              ChartChartTypeEnum.chChartTypeRadarSmoothLine,
              ChartChartTypeEnum.chChartTypeSmoothLine};

                objChart.Type = chartTypes[intChartTypes];//得到图例类型

                for (int i = 0; i < data_al.Length - 1; i++)
                {
                    //在ChartSpace对象中添加图表,Add方法返回chart对象
                    objChart.SeriesCollection.Add(i);
                    objChart.SeriesCollection[i].DataLabelsCollection.Add();
                    string strSeriesName = "" + (i + 1);
                    //给定series的名字
                    objChart.SeriesCollection[i].SetData(ChartDimensionsEnum.chDimSeriesNames,
                     (int)ChartSpecialDataSourcesEnum.chDataLiteral, strSeriesName);
                    //给定分类
                    objChart.SeriesCollection[i].SetData(ChartDimensionsEnum.chDimCategories,
                     (int)ChartSpecialDataSourcesEnum.chDataLiteral, data_al[0].ToArray());
                    //给定值
                    objChart.SeriesCollection[i].SetData
                     (ChartDimensionsEnum.chDimValues,
                     (int)ChartSpecialDataSourcesEnum.chDataLiteral, data_al[i + 1].ToArray());
                    objChart.SeriesCollection[i].Caption = "Example";
                }
                //输出成GIF文件.
                objCSpace.ExportPicture(filePath, "GIF", chartWidth, chartHeight);

                //创建GIF文件的相对路径.
                string strRelativePath;
                strRelativePath = filePath;
                return strRelativePath;
            }
        }
    }

  • 相关阅读:
    Java应用程序的运行机制,以及JDK,JRE,JVM
    正则表达式练习题
    正则表达式
    转:DOM操作
    jQuery 遍历
    转:把一个对象赋值给另一个对象会指向同一个内存地址
    sql 语句的先后执行顺序
    数据结构时间复杂度进阶篇
    数据结构时间复杂度基础篇
    UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现(转)
  • 原文地址:https://www.cnblogs.com/yuhanzhong/p/2487099.html
Copyright © 2011-2022 走看看