用OWC做统计图总结.docx

上传人:b****6 文档编号:9004174 上传时间:2023-02-02 格式:DOCX 页数:9 大小:64.04KB
下载 相关 举报
用OWC做统计图总结.docx_第1页
第1页 / 共9页
用OWC做统计图总结.docx_第2页
第2页 / 共9页
用OWC做统计图总结.docx_第3页
第3页 / 共9页
用OWC做统计图总结.docx_第4页
第4页 / 共9页
用OWC做统计图总结.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

用OWC做统计图总结.docx

《用OWC做统计图总结.docx》由会员分享,可在线阅读,更多相关《用OWC做统计图总结.docx(9页珍藏版)》请在冰豆网上搜索。

用OWC做统计图总结.docx

用OWC做统计图总结

最近做项目要对数据进行统计分析,所以做一些统计图,首先想到了微软的owc,同时自己把owc的操作封装了一下。

在程序里调用里方便的多。

先看一下效果图:

在使用该类前当然首先要引用一下owc的dll啦!

公布源码:

usingSystem;

usingSystem.Data;

usingSystem.Text;

usingMicrosoft.Office.Interop;

namespaceOWCChartTest

{

 ///

 ///利用OWC11进行作统计图的封装类。

 ///李天平2005-8-31

 ///

 publicclassOWCChart11

 {

  #region属性

  privatestring_phaysicalimagepath;

  privatestring_title;

  privatestring_seriesname;

  privateint_picwidth;

  privateint_pichight;

  privateDataTable_datasource;

  privatestringstrCategory;

  privatestringstrValue;

  ///

  ///图片存放路径

  ///

  publicstringPhaysicalImagePath

  {

   set{_phaysicalimagepath=value;}

   get{return_phaysicalimagepath;}

  }

  publicstringTitle

  {

   set{_title=value;}

   get{return_title;}

  }

  publicstringSeriesName

  {

   set{_seriesname=value;}

   get{return_seriesname;}

  }

  publicintPicWidth

  {

   set{_picwidth=value;}

   get{return_picwidth;}

  }

  publicintPicHight

  {

   set{_pichight=value;}

   get{return_pichight;}

  }

  publicDataTableDataSource

  {

   set

   {

    _datasource=value;

    strCategory=GetColumnsStr(_datasource);

    strValue=GetValueStr(_datasource);

   }

   get{return_datasource;}

  }

  privatestringGetColumnsStr(DataTabledt)

  {

   StringBuilderstrList=newStringBuilder();

   foreach(DataRowrindt.Rows)

   {

    strList.Append(r[0].ToString()+'\t');

   }

   returnstrList.ToString();

  }

  privatestringGetValueStr(DataTabledt)

  {

   StringBuilderstrList=newStringBuilder();

   foreach(DataRowrindt.Rows)

   {

    strList.Append(r[1].ToString()+'\t');

   }

   returnstrList.ToString();

  }

  #endregion

  publicOWCChart11()

  {

  }

  publicOWCChart11(stringPhaysicalImagePath,stringTitle,stringSeriesName)

  {

   _phaysicalimagepath=PhaysicalImagePath;

   _title=Title;

   _seriesname=SeriesName;  

  }

 

  ///

  ///柱形图

  ///

  ///

  publicstringCreateColumn()

  { 

   Microsoft.Office.Interop.Owc11.ChartSpaceobjCSpace=newMicrosoft.Office.Interop.Owc11.ChartSpaceClass();//创建ChartSpace对象来放置图表   

   Microsoft.Office.Interop.Owc11.ChChartobjChart =objCSpace.Charts.Add(0);//在ChartSpace对象中添加图表,Add方法返回chart对象

           

   //指定图表的类型。

类型由OWC.ChartChartTypeEnum枚举值得到//Microsoft.Office.Interop.OWC.ChartChartTypeEnum

   objChart.Type=Microsoft.Office.Interop.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 =360;//表示指定三维图表的旋转角度

//   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:

类别";

   objChart.Axes[1].HasTitle=true;

   objChart.Axes[1].Title.Caption="Y:

数量";

   

   //添加一个series

   Microsoft.Office.Interop.Owc11.ChSeriesThisChSeries=objChart.SeriesCollection.Add(0);

   //给定series的名字

          ThisChSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimSeriesNames,

     Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(),SeriesName);

          //给定分类

          ThisChSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimCategories,

     Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(),strCategory);

          //给定值

          ThisChSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimValues,

     Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(),strValue);

   Microsoft.Office.Interop.Owc11.ChDataLabelsdl=objChart.SeriesCollection[0].DataLabelsCollection.Add();   

   dl.HasValue=true;

//   dl.Position=Microsoft.Office.Interop.Owc11.ChartDataLabelPositionEnum.chLabelPositionOutsideEnd;

      

   stringfilename=DateTime.Now.ToString("yyyyMMddHHmmssff")+".gif";

   stringstrAbsolutePath=_phaysicalimagepath+"\\"+filename;

   objCSpace.ExportPicture(strAbsolutePath,"GIF",_picwidth,_pichight);//输出成GIF文件.

   returnfilename;

   

  }

       ///

       ///饼图

       ///

       ///

  publicstringCreatePie()

  {

   Microsoft.Office.Interop.Owc11.ChartSpaceobjCSpace=newMicrosoft.Office.Interop.Owc11.ChartSpaceClass();//创建ChartSpace对象来放置图表   

   Microsoft.Office.Interop.Owc11.ChChartobjChart =objCSpace.Charts.Add(0);//在ChartSpace对象中添加图表,Add方法返回chart对象

       

      

   //指定图表的类型

   objChart.Type=Microsoft.Office.Interop.Owc11.ChartChartTypeEnum.chChartTypePie;

   

   //指定图表是否需要图例

   objChart.HasLegend=true;

   

   //标题

   objChart.HasTitle=true;

   objChart.Title.Caption=_title;

     

         

   //添加一个series

   Microsoft.Office.Interop.Owc11.ChSeriesThisChSeries=objChart.SeriesCollection.Add(0);

   //给定series的名字

   ThisChSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimSeriesNames,

    Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(),SeriesName);

   //给定分类

   ThisChSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimCategories,

    Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(),strCategory);

   //给定值

   ThisChSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimValues,

    Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(),strValue);

      

   //表示系列或趋势线上的单个数据标志

   Microsoft.Office.Interop.Owc11.ChDataLabelsdl=objChart.SeriesCollection[0].DataLabelsCollection.Add();   

   dl.HasValue=true;

   dl.HasPercentage=true;   

   //图表绘图区的图例放置在右侧。

//   dl.Position=Microsoft.Office.Interop.Owc11.ChartDataLabelPositionEnum.chLabelPositionRight;

   

   stringfilename=DateTime.Now.Ticks.ToString()+".gif";   

   stringstrAbsolutePath=_phaysicalimagepath+"\\"+filename;

   objCSpace.ExportPicture(strAbsolutePath,"GIF",_picwidth,_pichight);//输出成GIF文件.

   returnfilename;

  }

  ///

  ///条形图

  ///

  ///

  publicstringCreateBar()

  { 

   Microsoft.Office.Interop.Owc11.ChartSpaceobjCSpace=newMicrosoft.Office.Interop.Owc11.ChartSpaceClass();//创建ChartSpace对象来放置图表   

   Microsoft.Office.Interop.Owc11.ChChartobjChart =objCSpace.Charts.Add(0);//在ChartSpace对象中添加图表,Add方法返回chart对象

           

   //指定图表的类型。

类型由OWC.ChartChartTypeEnum枚举值得到//Microsoft.Office.Interop.OWC.ChartChartTypeEnum

   objChart.Type=Microsoft.Office.Interop.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 =360;//表示指定三维图表的旋转角度

//   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:

类别";

   objChart.Axes[1].HasTitle=true;

   objChart.Axes[1].Title.Caption="Y:

数量";

   

   //添加一个series

   Microsoft.Office.Interop.Owc11.ChSeriesThisChSeries=objChart.SeriesCollection.Add(0);

   //给定series的名字

   ThisChSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimSeriesNames,

    Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(),SeriesName);

   //给定分类

   ThisChSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimCategories,

    Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(),strCategory);

   //给定值

   ThisChSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimValues,

    Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(),strValue);

   Microsoft.Office.Interop.Owc11.ChDataLabelsdl=objChart.SeriesCollection[0].DataLabelsCollection.Add();   

   dl.HasValue=true;

//   dl.Position=Microsoft.Office.Interop.Owc11.ChartDataLabelPositionEnum.chLabelPositionOutsideEnd;

      

   stringfilename=DateTime.Now.ToString("yyyyMMddHHmmssff")+".gif";

   stringstrAbsolutePath=_phaysicalimagepath+"\\"+filename;

   objCSpace.ExportPicture(strAbsolutePath,"GIF",_picwidth,_pichight);//输出成GIF文件.

   returnfilename;

   

  }

 }

}

在要显示统计图的页面代码直接调用就可以了

   OWCChart11chart=newOWCChart11();   

   chart.Title="标题";

   chart.SeriesName="图例";

   stringfilepath=Server.MapPath(".")+"\\ChartImages";

   chart.PhaysicalImagePath=filepath;

   chart.PicHight=320;

   chart.PicWidth=500;

   chart.DataSource=GetData();//这是你的数据源

   

   this.Image1.ImageUrl=filepath+"\\"+chart.CreateBar();//显示给图像控件。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 其它语言学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1