zoukankan      html  css  js  c++  java
  • OWC11生成统计图案例

    (1)饼状图:----通过修改参数生成不同的走势图,

      string strCategory = "优良率" + ' ' + "合格率" + ' ' + "不合格率";

            string strValue = a.ToString("F3") + ' ' + b.ToString("F3") + ' ' + c.ToString("F3");

            string path=Server.MapPath("~/File/Graphs");

            string mTitle = "施工安全评定等级饼形图";

            string xTitle = "";

            string yTitle = "";

            int imgWidth = 1000;

            int imgHeight =400;

            int chartType = 18;//设置生成图表的种类

            // this.CreateChartSmoothLine(strCategory,strValue,mTitle,xTitle,yTitle,imgWidth,imgHeight,chartType);

            FishPro.OWCChart11 chart = new OWCChart11(path, "评级", mTitle,chartType, xTitle, yTitle, imgWidth, imgHeight);

            chart.OCategory = strCategory;

            chart.OValue = strValue;

            if (chart.Create())

            {

                this.Image1.ImageUrl ="~/File/Graphs/"+chart.FileName;

            }

            else

            {

                Messabox.ShowError(this, "生成失败");

          

     

    (2)添加类:

        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() + ' ');

                    }

                    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() + ' ');

                    }

                    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;

                }

     

     

            }

  • 相关阅读:
    数组的typedef 和函数的typedef
    函数返回值当左值的问题
    C++中虚析构函数的作用
    word2013密钥
    子类父类步长问题
    函数重定义——重写———重载
    C++的成员初始化列表和构造函数体(以前未知)
    常引用
    项目开发中的字符串模型
    指针函数的++(极易犯错误)
  • 原文地址:https://www.cnblogs.com/guozefeng/p/3219459.html
Copyright © 2011-2022 走看看