zoukankan      html  css  js  c++  java
  • 封装OWC做统计图

    using System;
    using System.Data;
    using System.Text;
    using System.Drawing;

    namespace test.OWCC
    {
        
    /// <summary>
        
    /// 封装OWC做统计图
        
    /// </summary>
        public class OWCChart
        {
            
    #region 属性

            
    private string _phaysicalimagepath;
            
    private string _title;
            
    private string _seriesname;
            
    private int _picwidth;
            
    private int _pichight;
            
    private DataTable _datasource;
            
    private string _strdatasource;
            
    private string strCategory;
            
    private string strValue;

            
    /// <summary>
            
    /// 图片存放路径
            
    /// </summary>
            public string PhaysicalImagePath
            {
                
    set { _phaysicalimagepath = value; }
                
    get { return _phaysicalimagepath; }
            }

            
    public string Title
            {
                
    set { _title = value; }
                
    get { return _title; }
            }

            
    public string SeriesName
            {
                
    set { _seriesname = value; }
                
    get { return _seriesname; }
            }

            
    public int PicWidth
            {
                
    set { _picwidth = value; }
                
    get { return _picwidth; }
            }

            
    public int PicHight
            {
                
    set { _pichight = value; }
                
    get { return _pichight; }
            }

            
    /// <summary>
            
    /// 传DataTable类型
            
    /// </summary>
            public DataTable DataSource
            {
                
    set
                {
                    _datasource 
    = value;
                    strCategory 
    = GetColumnsStr(_datasource);
                    strValue 
    = GetValueStr(_datasource);
                }
                
    get { return _datasource; }
            }

            
    /// <summary>
            
    /// 传字符串,分隔用分号(;)
            
    /// </summary>
            public string strDataSource
            {
                
    set
                {
                    _strdatasource 
    = value;
                    strCategory 
    = GetColumnsStr(_strdatasource);
                    strValue 
    = GetValueStr(_strdatasource);
                }
                
    get { return _strdatasource; }
            }

            
    private string GetColumnsStr(DataTable dt)
            {
                StringBuilder strList 
    = new StringBuilder();
                
    foreach (DataRow r in dt.Rows)
                {
                    strList.Append(r[
    0].ToString() + '\t');
                }
                
    return strList.ToString();
            }

            
    private string GetColumnsStr(string coldt)
            {
                
    return coldt == "" ? "" : coldt.Substring(0, coldt.IndexOf(";"));
            }

            
    private string GetValueStr(DataTable dt)
            {
                StringBuilder strList 
    = new StringBuilder();
                
    foreach (DataRow r in dt.Rows)
                {
                    strList.Append(r[
    1].ToString() + '\t');
                }
                
    return strList.ToString();
            }

            
    private string GetValueStr(string rowdt)
            {
                
    return rowdt == "" ? "" : rowdt.Substring(rowdt.LastIndexOf(";"+ 1);
            }

            
    #endregion
            
    #region 构造函数

            
    /// <summary>
            
    /// 0
            
    /// </summary>
            public OWCChart()
            {
                
    //
            }

            
    /// <summary>
            
    /// 1
            
    /// </summary>
            
    /// <param name="PhaysicalImagePath"></param>
            
    /// <param name="Title"></param>
            
    /// <param name="SeriesName"></param>
            
    /// <param name="PicWidth"></param>
            
    /// <param name="PicHight"></param>
            public OWCChart(string PhaysicalImagePath, string Title, string SeriesName, int PicWidth, int PicHight)
            {
                _phaysicalimagepath 
    = PhaysicalImagePath;
                _title 
    = Title;
                _seriesname 
    = SeriesName;
                _pichight 
    = PicHight;
                _picwidth 
    = PicWidth;
            }

            
    /// <summary>
            
    /// 2
            
    /// </summary>
            
    /// <param name="Title"></param>
            
    /// <param name="SeriesName"></param>
            
    /// <param name="PicWidth"></param>
            
    /// <param name="PicHight"></param>
            public OWCChart(string Title, string SeriesName, int PicWidth, int PicHight)
            {
                _title 
    = Title;
                _seriesname 
    = SeriesName;
                _pichight 
    = PicHight;
                _picwidth 
    = PicWidth;
            }

            
    #endregion
            
    #region 柱形图

            
    /// <summary>
            
    /// 柱形图
            
    /// </summary>
            
    /// <param name="Xname">X轴描述</param>
            
    /// <param name="Yname">Y轴描述</param>
            
    /// <param name="IfExportToFile">若把图像输出到文件夹则为true,否则为false</param>
            
    /// <returns>若把图像输出到文件夹返回生成的图像名称,否则返回Bitmap类型</returns>
            public Object CreateColumn(string Xname, string Yname, bool IfExportToFile, bool If3D)
            {
                OWC11.ChartSpace objCSpace 
    = new OWC11.ChartSpaceClass();//创建ChartSpace对象来放置图表   
                OWC11.ChChart objChart = objCSpace.Charts.Add(0);//在ChartSpace对象中添加图表,Add方法返回chart对象

                
    //指定图表的类型。类型由OWC11.ChartChartTypeEnum枚举值得到
                if (If3D == true)
                    objChart.Type 
    = OWC11.ChartChartTypeEnum.chChartTypeColumnClustered3D;
                
    else
                    objChart.Type 
    = OWC11.ChartChartTypeEnum.chChartTypeColumnClustered;

                
    //指定图表是否需要图例
                objChart.HasLegend = true;

                
    //标题
                objChart.HasTitle = true;
                objChart.Title.Caption 
    = _title;
                objChart.Title.Font.Bold 
    = true;
                
    //          objChart.Title.Font.Color="blue";        
                #region 样式设置

                
    //旋转
                
    //            objChart.Rotation  = 145;//表示指定三维图表的旋转角度
                
    //            objChart.Inclination = 10;//表示指定三维图表的视图斜率。有效范围为 -90 到 90
                
    //
                
    //            //背景颜色
                
    //            objChart.PlotArea.Interior.Color = "red";
                
    //
                
    //            //底座颜色
                
    //            objChart.PlotArea.Floor.Interior.Color = "green";
                
    //            objChart.Overlap = 50;//单个类别中标志之间的重叠量

                
    #endregion

                
    //x,y轴的图示说明
                objChart.Axes[0].HasTitle = true;
                objChart.Axes[
    0].Title.Caption = "X : " + Xname + "";
                objChart.Axes[
    1].HasTitle = true;
                objChart.Axes[
    1].Title.Caption = "Y : " + Yname + "";

                
    //添加一个series
                OWC11.ChSeries ThisChSeries = objChart.SeriesCollection.Add(0);

                
    //给定series的名字
                ThisChSeries.SetData(OWC11.ChartDimensionsEnum.chDimSeriesNames,
                    OWC11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), SeriesName);
                
    //给定分类
                ThisChSeries.SetData(OWC11.ChartDimensionsEnum.chDimCategories,
                    OWC11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), strCategory);
                
    //给定值
                ThisChSeries.SetData(OWC11.ChartDimensionsEnum.chDimValues,
                    OWC11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), strValue);

                OWC11.ChDataLabels dl 
    = objChart.SeriesCollection[0].DataLabelsCollection.Add();
                dl.HasValue 
    = true;
                
    //          dl.Position=OWC11.ChartDataLabelPositionEnum.chLabelPositionOutsideEnd;

                
    //            string filename=DateTime.Now.ToString("yyyyMMddHHmmssff")+".gif";

                
    if (IfExportToFile == true)
                {
                    
    string filename = "temp.gif";
                    
    string strAbsolutePath = _phaysicalimagepath + "\\" + filename;
                    objCSpace.ExportPicture(strAbsolutePath, 
    "GIF", _picwidth, _pichight); //输出成GIF文件.

                    
    return filename;
                }
                
    else
                {
                    
    string tmp = "Tmp";
                    objCSpace.ExportPicture(tmp, 
    "GIF", _picwidth, _pichight);
                    Bitmap bm 
    = new Bitmap(tmp, true);

                    
    return bm;
                }
            }

            
    #endregion
            
    #region 线性图

            
    /// <summary>
            
    /// 线性图
            
    /// </summary>
            
    /// <param name="Xname">X轴描述</param>
            
    /// <param name="Yname">Y轴描述</param>
            
    /// <param name="IfExportToFile">若把图像输出到文件夹则为true,否则为false</param>
            
    /// <returns>若把图像输出到文件夹返回生成的图像名称,否则返回Bitmap类型</returns>
            public Object CreateLine(string Xname, string Yname, bool IfExportToFile, bool If3D)
            {
                OWC11.ChartSpace objCSpace 
    = new OWC11.ChartSpaceClass();//创建ChartSpace对象来放置图表   
                OWC11.ChChart objChart = objCSpace.Charts.Add(0);//在ChartSpace对象中添加图表,Add方法返回chart对象

                
    //指定图表的类型。类型由OWC11.ChartChartTypeEnum枚举值得到
                if (If3D == true)
                    objChart.Type 
    = OWC11.ChartChartTypeEnum.chChartTypeLine3D;
                
    else
                    objChart.Type 
    = OWC11.ChartChartTypeEnum.chChartTypeLine;

                
    //指定图表是否需要图例
                objChart.HasLegend = true;

                
    //标题
                objChart.HasTitle = true;
                objChart.Title.Caption 
    = _title;
                objChart.Title.Font.Bold 
    = true;
                
    //          objChart.Title.Font.Color="blue";        
                #region 样式设置

                
    //旋转
                
    //            objChart.Rotation  = 145;//表示指定三维图表的旋转角度
                
    //            objChart.Inclination = 10;//表示指定三维图表的视图斜率。有效范围为 -90 到 90
                
    //
                
    //            //背景颜色
                
    //            objChart.PlotArea.Interior.Color = "red";
                
    //
                
    //            //底座颜色
                
    //            objChart.PlotArea.Floor.Interior.Color = "green";
                
    //            objChart.Overlap = 50;//单个类别中标志之间的重叠量

                
    #endregion

                
    //x,y轴的图示说明
                objChart.Axes[0].HasTitle = true;
                objChart.Axes[
    0].Title.Caption = "X : " + Xname + "";
                objChart.Axes[
    1].HasTitle = true;
                objChart.Axes[
    1].Title.Caption = "Y : " + Yname + "";

                
    //添加一个series
                OWC11.ChSeries ThisChSeries = objChart.SeriesCollection.Add(0);

                
    //给定series的名字
                ThisChSeries.SetData(OWC11.ChartDimensionsEnum.chDimSeriesNames,
                    OWC11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), SeriesName);
                
    //给定分类
                ThisChSeries.SetData(OWC11.ChartDimensionsEnum.chDimCategories,
                    OWC11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), strCategory);
                
    //给定值
                ThisChSeries.SetData(OWC11.ChartDimensionsEnum.chDimValues,
                    OWC11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), strValue);

                OWC11.ChDataLabels dl 
    = objChart.SeriesCollection[0].DataLabelsCollection.Add();
                dl.HasValue 
    = true;
                
    //          dl.Position=OWC11.ChartDataLabelPositionEnum.chLabelPositionOutsideEnd;

                
    //            string filename=DateTime.Now.ToString("yyyyMMddHHmmssff")+".gif";

                
    if (IfExportToFile == true)
                {
                    
    string filename = "temp.gif";
                    
    string strAbsolutePath = _phaysicalimagepath + "\\" + filename;
                    objCSpace.ExportPicture(strAbsolutePath, 
    "GIF", _picwidth, _pichight); //输出成GIF文件.

                    
    return filename;
                }
                
    else
                {
                    
    string tmp = "Tmp";
                    objCSpace.ExportPicture(tmp, 
    "GIF", _picwidth, _pichight);
                    Bitmap bm 
    = new Bitmap(tmp, true);

                    
    return bm;
                }
            }

            
    #endregion
            
    #region 条形图(横向)

            
    /// <summary>
            
    /// 条形图(横向)
            
    /// </summary>
            
    /// <param name="Xname"></param>
            
    /// <param name="Yname"></param>
            
    /// <param name="IfExportToFile"></param>
            
    /// <returns></returns>
            public Object CreateBar(string Xname, string Yname, bool IfExportToFile, bool If3D)
            {
                OWC11.ChartSpace objCSpace 
    = new OWC11.ChartSpaceClass();//创建ChartSpace对象来放置图表   
                OWC11.ChChart objChart = objCSpace.Charts.Add(0);//在ChartSpace对象中添加图表,Add方法返回chart对象

                
    //指定图表的类型。类型由OWC.ChartChartTypeEnum枚举值得到
                if (If3D == true)
                    objChart.Type 
    = OWC11.ChartChartTypeEnum.chChartTypeBarClustered3D;
                
    else
                    objChart.Type 
    = OWC11.ChartChartTypeEnum.chChartTypeBarClustered;

                
    //指定图表是否需要图例
                objChart.HasLegend = true;

                
    //标题
                objChart.HasTitle = true;
                objChart.Title.Caption 
    = _title;
                objChart.Title.Font.Bold 
    = true;
                
    //          objChart.Title.Font.Color="blue";        
                #region 样式设置

                
    //旋转
                
    //            objChart.Rotation  = 145;//表示指定三维图表的旋转角度
                
    //            objChart.Inclination = 10;//表示指定三维图表的视图斜率。有效范围为 -90 到 90

                
    //背景颜色
                
    //            objChart.PlotArea.Interior.Color = "red";

                
    //底座颜色
                
    //            objChart.PlotArea.Floor.Interior.Color = "green";
                
    //            objChart.Overlap = 50;//单个类别中标志之间的重叠量

                
    #endregion

                
    //x,y轴的图示说明
                objChart.Axes[0].HasTitle = true;
                objChart.Axes[
    0].Title.Caption = "X : " + Xname + "";
                objChart.Axes[
    1].HasTitle = true;
                objChart.Axes[
    1].Title.Caption = "Y : " + Yname + "";

                
    //添加一个series
                OWC11.ChSeries ThisChSeries = objChart.SeriesCollection.Add(0);

                
    //给定series的名字
                ThisChSeries.SetData(OWC11.ChartDimensionsEnum.chDimSeriesNames,
                    OWC11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), SeriesName);
                
    //给定分类
                ThisChSeries.SetData(OWC11.ChartDimensionsEnum.chDimCategories,
                    OWC11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), strCategory);
                
    //给定值
                ThisChSeries.SetData(OWC11.ChartDimensionsEnum.chDimValues,
                    OWC11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), strValue);

                OWC11.ChDataLabels dl 
    = objChart.SeriesCollection[0].DataLabelsCollection.Add();
                dl.HasValue 
    = true;
                
    //          dl.Position=OWC11.ChartDataLabelPositionEnum.chLabelPositionOutsideEnd;    

                
    //            string filename=DateTime.Now.ToString("yyyyMMddHHmmssff")+".gif";

                
    if (IfExportToFile == true)
                {
                    
    string filename = "temp.gif";
                    
    string strAbsolutePath = _phaysicalimagepath + "\\" + filename;
                    objCSpace.ExportPicture(strAbsolutePath, 
    "GIF", _picwidth, _pichight); //输出成GIF文件.

                    
    return filename;
                }
                
    else
                {
                    
    string tmp = "Tmp";
                    objCSpace.ExportPicture(tmp, 
    "GIF", _picwidth, _pichight);
                    Bitmap bm 
    = new Bitmap(tmp, true);

                    
    return bm;
                }
            }

            
    #endregion
            
    #region 饼图

            
    /// <summary>
            
    /// 饼图
            
    /// </summary>
            
    /// <param name="IfExportToFile"></param>
            
    /// <returns></returns>
            public Object CreatePie(bool IfExportToFile, bool If3D)
            {
                OWC11.ChartSpace objCSpace 
    = new OWC11.ChartSpaceClass();//创建ChartSpace对象来放置图表   
                OWC11.ChChart objChart = objCSpace.Charts.Add(0);//在ChartSpace对象中添加图表,Add方法返回chart对象       

                
    //指定图表的类型
                if (If3D == true)
                    objChart.Type 
    = OWC11.ChartChartTypeEnum.chChartTypePie3D;
                
    else
                    objChart.Type 
    = OWC11.ChartChartTypeEnum.chChartTypePie;

                
    //指定图表是否需要图例
                objChart.HasLegend = true;

                
    //标题
                objChart.HasTitle = true;
                objChart.Title.Caption 
    = _title;
                objChart.Title.Font.Bold 
    = true;

                
    //添加一个series
                OWC11.ChSeries ThisChSeries = objChart.SeriesCollection.Add(0);

                
    //给定series的名字
                ThisChSeries.SetData(OWC11.ChartDimensionsEnum.chDimSeriesNames,
                    OWC11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), SeriesName);
                
    //给定分类
                ThisChSeries.SetData(OWC11.ChartDimensionsEnum.chDimCategories,
                    OWC11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), strCategory);
                
    //给定值
                ThisChSeries.SetData(OWC11.ChartDimensionsEnum.chDimValues,
                    OWC11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), strValue);

                
    //表示系列或趋势线上的单个数据标志
                OWC11.ChDataLabels dl = objChart.SeriesCollection[0].DataLabelsCollection.Add();
                dl.HasValue 
    = true;
                dl.HasPercentage 
    = true;
                
    //图表绘图区的图例放置在右侧。
                
    //          dl.Position=OWC11.ChartDataLabelPositionEnum.chLabelPositionRight;

                
    //            string filename=DateTime.Now.Ticks.ToString()+".gif"; 

                
    if (IfExportToFile == true)
                {
                    
    string filename = "temp.gif";
                    
    string strAbsolutePath = _phaysicalimagepath + "\\" + filename;
                    objCSpace.ExportPicture(strAbsolutePath, 
    "GIF", _picwidth, _pichight); //输出成GIF文件.

                    
    return filename;
                }
                
    else
                {
                    
    string tmp = "Tmp";
                    objCSpace.ExportPicture(tmp, 
    "GIF", _picwidth, _pichight);
                    Bitmap bm 
    = new Bitmap(tmp, true);

                    
    return bm;
                }
            }

            
    #endregion
        }
    }

    申明

    非源创博文中的内容均收集自网上,若有侵权之处,请及时联络,我会在第一时间内删除.再次说声抱歉!!!

    博文欢迎转载,但请给出原文连接。

  • 相关阅读:
    Spring--AOP
    Database--事务
    Neo4j--UNIQUE约束
    Neo4j--INDEX索引
    排序算法 目录
    数据结构 目录
    设计模式 目录
    建造者模式及应用举例
    模板模式以及应用举例
    真·随笔
  • 原文地址:https://www.cnblogs.com/Athrun/p/1203138.html
Copyright © 2011-2022 走看看