using System; using System.Data; using System.Text; namespace Ant.Service.Utilities { ///// ///// 利用OWC11进行作统计图的封装类。 ///// 李天平 2005-8-31 ///// //public class OWCChart11 //{ // #region 属性 // private string _phaysicalimagepath; // private string _title; // private string _seriesname; // private int _picwidth; // private int _pichight; // private DataTable _datasource; // private string strCategory; // private string strValue; // 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; } // } // public DataTable DataSource // { // set // { // _datasource = value; // strCategory = GetColumnsStr(_datasource); // strValue = GetValueStr(_datasource); // } // get { return _datasource; } // } // private string GetColumnsStr(System.Data.DataTable dt) // { // StringBuilder strList = new StringBuilder(); // foreach (DataRow r in dt.Rows) // { // strList.Append(r[0].ToString() + '\t'); // } // return strList.ToString(); // } // 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 // public OWCChart11() // { // } // public OWCChart11(string PhaysicalImagePath, string Title, string SeriesName) // { // _phaysicalimagepath = PhaysicalImagePath; // _title = Title; // _seriesname = SeriesName; // } // /// // /// 柱形图 // /// // /// // public string CreateColumn() // { // Microsoft.Office.Interop.Owc11.ChartSpace objCSpace = new Microsoft.Office.Interop.Owc11.ChartSpaceClass();//创建ChartSpace对象来放置图表 // Microsoft.Office.Interop.Owc11.ChChart objChart = 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.ChSeries ThisChSeries = 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.ChDataLabels dl = objChart.SeriesCollection[0].DataLabelsCollection.Add(); // dl.HasValue = true; // // dl.Position=Microsoft.Office.Interop.Owc11.ChartDataLabelPositionEnum.chLabelPositionOutsideEnd; // string filename = DateTime.Now.ToString("yyyyMMddHHmmssff") + ".gif"; // string strAbsolutePath = _phaysicalimagepath + "\\" + filename; // objCSpace.ExportPicture(strAbsolutePath, "GIF", _picwidth, _pichight);//输出成GIF文件. // return filename; // } // /// // /// 饼图 // /// // /// // public string CreatePie() // { // Microsoft.Office.Interop.Owc11.ChartSpace objCSpace = new Microsoft.Office.Interop.Owc11.ChartSpaceClass();//创建ChartSpace对象来放置图表 // Microsoft.Office.Interop.Owc11.ChChart objChart = 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.ChSeries ThisChSeries = 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.ChDataLabels dl = objChart.SeriesCollection[0].DataLabelsCollection.Add(); // dl.HasValue = true; // dl.HasPercentage = true; // //图表绘图区的图例放置在右侧。 // // dl.Position=Microsoft.Office.Interop.Owc11.ChartDataLabelPositionEnum.chLabelPositionRight; // string filename = DateTime.Now.Ticks.ToString() + ".gif"; // string strAbsolutePath = _phaysicalimagepath + "\\" + filename; // objCSpace.ExportPicture(strAbsolutePath, "GIF", _picwidth, _pichight);//输出成GIF文件. // return filename; // } // /// // /// 条形图 // /// // /// // public string CreateBar() // { // Microsoft.Office.Interop.Owc11.ChartSpace objCSpace = new Microsoft.Office.Interop.Owc11.ChartSpaceClass();//创建ChartSpace对象来放置图表 // Microsoft.Office.Interop.Owc11.ChChart objChart = 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.ChSeries ThisChSeries = 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.ChDataLabels dl = objChart.SeriesCollection[0].DataLabelsCollection.Add(); // dl.HasValue = true; // // dl.Position=Microsoft.Office.Interop.Owc11.ChartDataLabelPositionEnum.chLabelPositionOutsideEnd; // string filename = DateTime.Now.ToString("yyyyMMddHHmmssff") + ".gif"; // string strAbsolutePath = _phaysicalimagepath + "\\" + filename; // objCSpace.ExportPicture(strAbsolutePath, "GIF", _picwidth, _pichight);//输出成GIF文件. // return filename; // } //} }