C#编写OWC11组件(转贴)

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

namespace  FishPro
{
    
/// <summary>
    
/// 使用 OWCChart11 生成各种图表
    
/// 
    
/// 
    
/// </summary>

    public class OWCChart11
    
{
        
#region 属性
        
private string m_SavePath;
        
private string m_Category;
        
private string m_Value;
        
private DataTable m_DataSource;
        
private string m_SeriesName;
        
private string m_Title;
        
private string m_AxesXTitle;
        
private string m_AxesYTitle;
        
private int m_PicWidth;
        
private int m_PicHeight;
        
private int m_Type;
        
private string m_FileName;

        
/// <summary>
        
/// 保存图片的路径和名称,物理路径
        
/// </summary>

        public string SavePath
        
{
            
get{return m_SavePath;}
            
set{m_SavePath=value;}
        }

        
        
/// <summary>
        
/// 直接获得类型
        
/// </summary>

        public string OCategory
        
{
            
get{return m_Category;}
            
set{m_Category=value;}
        }

        
        
/// <summary>
        
/// 直接获得值
        
/// </summary>

        public string OValue
        
{
            
get{return m_Value;}
            
set{m_Value=value;}
        }



        
/// <summary>
        
/// 以表格DataTable的形式获取原始数据
        
/// </summary>

        public DataTable DataSource
        
{
            
get{return m_DataSource;}
            
set
            
{
                m_DataSource
=value;
                m_Category
=GetColumnsStr(m_DataSource);
                m_Value
=GetValueStr(m_DataSource);
            }

        }

        
        
/// <summary>
        
/// 简要说明
        
/// </summary>

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

        
        
/// <summary>
        
/// 图表的总标题,说明图表的简单意思
        
/// </summary>

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


        
/// <summary>
        
/// 图表横坐标标题,说明横坐标的意义
        
/// </summary>

        public string AxesXTitle
        
{
            
get{return m_AxesXTitle;}
            
set{m_AxesXTitle=value;}
        }


        
/// <summary>
        
/// 图表纵坐标标题,说明纵坐标的意义
        
/// </summary>

        public string AxesYTitle
        
{
            
get{return m_AxesYTitle;}
            
set{m_AxesYTitle=value;}
        }

        
        
/// <summary>
        
///  生成的图片宽度
        
/// </summary>

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


        
/// <summary>
        
///  生成的图片高度
        
/// </summary>

        public int PicHeight
        
{
            
get{return m_PicHeight;}
            
set{m_PicHeight=value;}
        }


        
/// <summary>
        
/// 类型
        
/// chChartTypeColumnStacked100 =2 
        
///chChartTypeColumnStacked1003D = 49 
        
///chChartTypeColumnStacked3D = 48 
        
///chChartTypeCombo = -1 
        
///chChartTypeCombo3D = -2 
        
///chChartTypeDoughnut = 32 
        
///chChartTypeDoughnutExploded = 33 
        
///chChartTypeLine = 6 
        
///chChartTypeLine3D = 54 
        
///chChartTypeLineMarkers=  7 
        
///chChartTypeLineOverlapped3D=  55 
        
///chChartTypeLineStacked = 8 
        
///chChartTypeLineStacked100  =10 
        
///chChartTypeLineStacked1003D=  57 
        
///chChartTypeLineStacked100Markers = 11 
        
///chChartTypeLineStacked3D = 56 
        
///chChartTypeLineStackedMarkers = 9 
        
///chChartTypePie = 18 
        
///chChartTypePie3D =58 
        
///chChartTypePieExploded = 19 
        
///chChartTypePieExploded3D = 59 
        
///chChartTypePieStacked = 20 
        
///chChartTypePolarLine = 42 
        
///chChartTypePolarLineMarkers = 43 
        
///chChartTypePolarMarkers = 41 
        
///chChartTypePolarSmoothLine = 44 
        
///chChartTypePolarSmoothLineMarkers = 45 
        
///chChartTypeRadarLine=  34 
        
///chChartTypeRadarLineFilled = 36 
        
///chChartTypeRadarLineMarkers=  35 
        
///chChartTypeRadarSmoothLine = 37 
        
///chChartTypeRadarSmoothLineMarkers = 38 
        
///chChartTypeScatterLine = 25 
        
///chChartTypeScatterLineFilled = 26 
        
///chChartTypeScatterLineMarkers = 24 
        
///chChartTypeScatterMarkers = 21 
        
///chChartTypeScatterSmoothLine = 23 
        
///chChartTypeScatterSmoothLineMarkers = 22 
        
///chChartTypeSmoothLine = 12 
        
///chChartTypeSmoothLineMarkers = 13 
        
///chChartTypeSmoothLineStacked = 14 
        
///chChartTypeSmoothLineStacked100 = 16 
        
///chChartTypeSmoothLineStacked100Markers = 17 
        
///chChartTypeSmoothLineStackedMarkers = 15 
        
///chChartTypeStockHLC = 39 
        
///chChartTypeStockOHLC = 40 
        
/// </summary>

        public int Type
        
{
            
get{return m_Type;}
            
set{m_Type=value;}
        }


        
public string FileName
        
{
            
get{return m_FileName;}
            
set
            
{
                m_FileName
=value;
                
if(m_FileName==null||m_FileName=="")
                
{
                    m_FileName
=DateTime.Now.ToString("yyyyMMddHHmmssff")+".gif";//生成图片名称
                }

            }

        }


        
/// <summary>
        
/// 是DataTable的转换
        
/// </summary>
        
/// <param name="dt"></param>
        
/// <returns></returns>

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

            
return strList.ToString();
        }


        
/// <summary>
        
/// 是DataTable的转换
        
/// </summary>
        
/// <param name="dt"></param>
        
/// <returns></returns>

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

            
return strList.ToString();
        }


        
#endregion


        
#region 枚举类型 
        
/// <summary>
        
/// 枚举类型 对应于OWC的图表类型
        
/// </summary>

        public  enum ChartType:int
        
{
            
            
/// <summary>
            
/// 面积图
            
/// </summary>

            chChartTypeArea = 29 ,
            
/// <summary>
            
/// 面积图3D
            
/// </summary>

            chChartTypeArea3D = 60 ,
            
/// <summary>
            
/// 面积图重复
            
/// </summary>

            chChartTypeAreaOverlapped3D = 61 ,
            
/// <summary>
            
/// 堆积面积图
            
/// </summary>

            chChartTypeAreaStacked  =30 ,
            
/// <summary>
            
/// 堆积面积图百分比图
            
/// </summary>

            chChartTypeAreaStacked100 = 31 ,
            
/// <summary>
            
/// 堆积面积图百分比图3D
            
/// </summary>

            chChartTypeAreaStacked1003D  =63 ,
            
/// <summary>
            
/// 堆积面积图3D
            
/// </summary>

            chChartTypeAreaStacked3D = 62 ,
            
/// <summary>
            
/// 横道图3D
            
/// </summary>

            chChartTypeBar3D = 50 ,
            
/// <summary>
            
/// 横道图串风格
            
/// </summary>

            chChartTypeBarClustered=  3 ,
            
/// <summary>
            
/// 横道图串风格3D
            
/// </summary>

            chChartTypeBarClustered3D=  51 ,
            
/// <summary>
            
/// 堆横道图
            
/// </summary>

            chChartTypeBarStacked = 4 ,
            
/// <summary>
            
/// 堆横道图百分比图
            
/// </summary>

            chChartTypeBarStacked100  =5 ,
            
/// <summary>
            
/// 堆横道图百分比图3D
            
/// </summary>

            chChartTypeBarStacked1003D = 53 ,
            
/// <summary>
            
/// 堆横道图3D
            
/// </summary>

            chChartTypeBarStacked3D  =52 ,
            
/// <summary>
            
/// 气泡图
            
/// </summary>

            chChartTypeBubble = 27 ,
            
/// <summary>
            
/// 线形气泡图
            
/// </summary>

            chChartTypeBubbleLine =28 ,
            
/// <summary>
            
/// 柱形图
            
/// </summary>

            chChartTypeColumn3D  =46 ,
            
/// <summary>
            
/// 3D柱形图
            
/// </summary>

            chChartTypeColumnClustered = 0 ,
            
/// <summary>
            
/// 3D串柱形图
            
/// </summary>

            chChartTypeColumnClustered3D = 47 ,
            
/// <summary>
            
/// 重叠柱形图
            
/// </summary>

            chChartTypeColumnStacked =1 ,
            
/// <summary>
            
/// 100%重叠柱形图
            
/// </summary>

            chChartTypeColumnStacked100 =2 ,
            
/// <summary>
            
/// 100%3D重叠柱形图
            
/// </summary>

            chChartTypeColumnStacked1003D = 49 ,
            
/// <summary>
            
/// 3D柱形图
            
/// </summary>

            chChartTypeColumnStacked3D = 48 ,
            
/// <summary>
            
/// 组合图
            
/// </summary>

            chChartTypeCombo = -1 ,
            
/// <summary>
            
/// 3D组合图
            
/// </summary>

            chChartTypeCombo3D = -2 ,
            
/// <summary>
            
/// 环形图
            
/// </summary>

            chChartTypeDoughnut = 32 ,
            
/// <summary>
            
/// 破式环形图
            
/// </summary>

            chChartTypeDoughnutExploded = 33 ,
            
/// <summary>
            
/// 折线图
            
/// </summary>

            chChartTypeLine = 6,
            
/// <summary>
            
/// 3D折线图
            
/// </summary>

            chChartTypeLine3D = 54 ,
            
/// <summary>
            
/// 制造折线图
            
/// </summary>

            chChartTypeLineMarkers=  7
            
/// <summary>
            
/// 重复折线图
            
/// </summary>

            chChartTypeLineOverlapped3D=  55
            
/// <summary>
            
/// 重叠折线图
            
/// </summary>

            chChartTypeLineStacked = 8 ,
            
/// <summary>
            
/// 100%重叠折线图
            
/// </summary>

            chChartTypeLineStacked100  =10 ,
            
/// <summary>
            
/// 100%3D重叠折线图
            
/// </summary>

            chChartTypeLineStacked1003D=  57
            
/// <summary>
            
/// 制造100%重叠折线图
            
/// </summary>

            chChartTypeLineStacked100Markers = 11 ,
            
/// <summary>
            
/// 3D重叠折线图
            
/// </summary>

            chChartTypeLineStacked3D = 56 ,
            
/// <summary>
            
/// 制造重叠折线图
            
/// </summary>

            chChartTypeLineStackedMarkers = 9 ,
            
/// <summary>
            
/// 饼图
            
/// </summary>

            chChartTypePie = 18 ,
            
/// <summary>
            
/// 3D饼图
            
/// </summary>

            chChartTypePie3D =58 ,
            
/// <summary>
            
/// 破式饼图
            
/// </summary>

            chChartTypePieExploded = 19 ,
            
/// <summary>
            
/// 3D破式饼图
            
/// </summary>

            chChartTypePieExploded3D = 59 ,
            
/// <summary>
            
/// 重叠饼图
            
/// </summary>

            chChartTypePieStacked = 20 ,
            
/// <summary>
            
/// 极坐标图
            
/// </summary>

            chChartTypePolarLine = 42 ,
            
/// <summary>
            
/// 制造线形极坐标图
            
/// </summary>

            chChartTypePolarLineMarkers = 43
            
/// <summary>
            
/// 制造极坐标图
            
/// </summary>

            chChartTypePolarMarkers = 41 ,
            
/// <summary>
            
/// 平滑线形极坐标图
            
/// </summary>

            chChartTypePolarSmoothLine = 44 ,
            
/// <summary>
            
/// 制造平滑线形极坐标图
            
/// </summary>

            chChartTypePolarSmoothLineMarkers = 45 ,
            
/// <summary>
            
/// 雷达图
            
/// </summary>

            chChartTypeRadarLine=  34 ,
            
/// <summary>
            
/// 填充雷达图
            
/// </summary>

            chChartTypeRadarLineFilled = 36 ,
            
/// <summary>
            
/// 制造雷达图
            
/// </summary>

            chChartTypeRadarLineMarkers=  35 ,
            
/// <summary>
            
/// 平滑雷达图
            
/// </summary>

            chChartTypeRadarSmoothLine = 37 ,
            
/// <summary>
            
/// 制造平滑雷达图
            
/// </summary>

            chChartTypeRadarSmoothLineMarkers = 38 ,
            
/// <summary>
            
/// 线形散点图
            
/// </summary>

            chChartTypeScatterLine = 25 ,
            
/// <summary>
            
/// 填充线形散点图
            
/// </summary>

            chChartTypeScatterLineFilled = 26 ,
            
/// <summary>
            
/// 制造线形散点图
            
/// </summary>

            chChartTypeScatterLineMarkers = 24 ,
            
/// <summary>
            
/// 制造散点图
            
/// </summary>

            chChartTypeScatterMarkers = 21 ,
            
/// <summary>
            
/// 平滑散点图
            
/// </summary>

            chChartTypeScatterSmoothLine = 23 ,
            
/// <summary>
            
/// 制造平滑散点图
            
/// </summary>

            chChartTypeScatterSmoothLineMarkers = 22 ,
            
/// <summary>
            
/// 平滑线图
            
/// </summary>

            chChartTypeSmoothLine = 12 ,
            
/// <summary>
            
/// 制造平滑线图
            
/// </summary>

            chChartTypeSmoothLineMarkers = 13 ,
            
/// <summary>
            
/// 重叠平滑线图
            
/// </summary>

            chChartTypeSmoothLineStacked = 14 ,
            
/// <summary>
            
/// 100%重叠平滑线图
            
/// </summary>

            chChartTypeSmoothLineStacked100 = 16 ,
            
/// <summary>
            
/// 制造100%重叠平滑线图
            
/// </summary>

            chChartTypeSmoothLineStacked100Markers = 17 ,
            
/// <summary>
            
/// 制造重叠平滑线图
            
/// </summary>

            chChartTypeSmoothLineStackedMarkers = 15 ,
            
/// <summary>
            
/// 股价图
            
/// </summary>

            chChartTypeStockHLC = 39 ,
            
/// <summary>
            
/// 股价图O型
            
/// </summary>

            chChartTypeStockOHLC = 40 

        }

        
#endregion


        
#region 构造函数
        
public OWCChart11()
        
{
            
//
            
// TODO: 在此处添加构造函数逻辑
            
//
        }


        
public OWCChart11(string SavePath,string SeriesName,string Title,int ChartType)
        
{
            m_SavePath
=SavePath;
            m_SeriesName
=SeriesName;
            m_Title
=Title;
            m_Type
=ChartType;
        }


        
public OWCChart11(string SavePath,string SeriesName,string Title,int ChartType,string AxesXTitle,string AxesYTitle)
        
{
            m_SavePath
=SavePath;
            m_SeriesName
=SeriesName;
            m_Title
=Title;
            m_AxesXTitle
=AxesXTitle;
            m_AxesYTitle
=AxesYTitle;
            m_Type
=ChartType;
        }


        
public OWCChart11(string SavePath,string SeriesName,string Title,int ChartType,string AxesXTitle,string AxesYTitle,int PicWidth,int PicHeight)
        
{
            m_SavePath
=SavePath;
            m_SeriesName
=SeriesName;
            m_Title
=Title;
            m_AxesXTitle
=AxesXTitle;
            m_AxesYTitle
=AxesYTitle;
            m_PicWidth
=PicWidth;
            m_PicHeight
=PicHeight;
            m_Type
=ChartType;
        }

        
#endregion


        
public bool Create()
        
{
            
//声明对象
            Microsoft.Office.Interop.Owc11.ChartSpace ThisChart = new  Microsoft.Office.Interop.Owc11.ChartSpaceClass();
            Microsoft.Office.Interop.Owc11.ChChart ThisChChart  
= ThisChart.Charts.Add(0);
            Microsoft.Office.Interop.Owc11.ChSeries ThisChSeries 
= ThisChChart.SeriesCollection.Add(0);
            
            
//显示图例
            ThisChChart.HasLegend = true;

            
//显示标题选项
            ThisChChart.HasTitle = true;
            ThisChChart.Title.Font.Name
="黑体";
            ThisChChart.Title.Font.Size
=14;
            ThisChChart.Title.Caption 
= m_Title;//from

            
//x,y轴说明
            
//x
            ThisChChart.Axes[0].HasTitle=true;
            ThisChChart.Axes[
0].Title.Font.Name="黑体";
            ThisChChart.Axes[
0].Title.Font.Size=12;
            ThisChChart.Axes[
0].Title.Caption=m_AxesXTitle;

            ThisChChart.Axes[
1].HasTitle=true;
            ThisChChart.Axes[
1].Title.Font.Name="黑体";
            ThisChChart.Axes[
1].Title.Font.Size=12;
            ThisChChart.Axes[
1].Title.Caption=m_AxesYTitle;

            
//图表类型
            ThisChChart.Type=(Microsoft.Office.Interop.Owc11.ChartChartTypeEnum) m_Type;
//            switch(m_Type)
//            {
//                case 0:    
//                    ThisChChart.Type =(Microsoft.Office.Interop.Owc11.ChartChartTypeEnum) m_Type;// Microsoft.Office.Interop.Owc11.ChartChartTypeEnum.chChartTypeColumn3D;//柱状图3D 
//                    break;
//                case 1:
//                    ThisChChart.Type = Microsoft.Office.Interop.Owc11.ChartChartTypeEnum.chChartTypeBar3D;//横道图3D
//                    break;
//                case 2:
//                    ThisChChart.Type = Microsoft.Office.Interop.Owc11.ChartChartTypeEnum.chChartTypeSmoothLine;//平滑曲线图
//                    break;
//                case 3:
//                    ThisChChart.Type = Microsoft.Office.Interop.Owc11.ChartChartTypeEnum.chChartTypePie;//圆饼图
//                    
//
//                    break;
//            }
            
//旋转
            ThisChChart.Rotation  = 360;
            ThisChChart.Inclination 
= 10;
            
//背景颜色
            ThisChChart.PlotArea.Interior.Color = "red";
            
//底座颜色
            ThisChChart.PlotArea.Floor.Interior.Color = "green";
            
            
//ThisChChart.Overlap = 50;

            
//给定series的名字
            ThisChSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimSeriesNames,Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(),m_SeriesName);
            
//给定分类
            ThisChSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimCategories,Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(),m_Category);
            
//给定值
            ThisChSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimValues,Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(),m_Value);

            Microsoft.Office.Interop.Owc11.ChDataLabels dl
=ThisChChart.SeriesCollection[0].DataLabelsCollection.Add();   
            dl.HasValue
=true;
            
//dl.HasPercentage=true;   
            
//导出图像文件
            try
            
{       
                
if(m_FileName==null||m_FileName=="")
                
{
                    m_FileName
=DateTime.Now.ToString("yyyyMMddHHmmssff")+".gif";//生成图片名称
                }

                ThisChart.ExportPicture(m_SavePath
+"//"+m_FileName,"gif",m_PicWidth,m_PicHeight);
                
return true;
            }
            
            
catch(Exception ee)                   
            
{
                
return false;                              
            }

            
return false;
        }

        
    }

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值